js 型別轉換

2021-08-30 17:06:50 字數 3637 閱讀 4408

1. 轉換函式:

js提供了parseint()和parsefloat()兩個轉換函式。前者把值轉換成整數,後者把值轉換成浮點數。只有對string型別呼叫這些方法,這兩個函式才能正確執行;對其他型別返回的都是nan(not a number)。

在判斷字串是否是數字值前,parseint()和parsefloat()都會仔細分析該字串。parseint()方法首先檢視位置0處的 字元,判斷它是否是個有效數字;如果不是,該方法將返回nan,不再繼續執行其他操作。但如果該字元是有效數字,該方法將檢視位置1處的字元,進行同樣的 測試。這一過程將持續到發現非有效數字的字元為止,此時parseint()將把該字元之前的字串轉換成數字。

例如,如果要把字串 "1234blue "轉換成整數,那麼parseint()將返回1234,因為當它檢測到字元b時,就會停止檢測過程。字串中包含的數字字面量會被正確轉換為數字,因此 字串 "0xa "會被正確轉換為數字10。不過,字串 "22.5 "將被轉換成22,因為對於整數來說,小數點是無效字元。一些示例如下:

parseint("1234blue"); //returns 1234

parseint("0xa"); //returns 10

parseint("22.5"); //returns 22

parseint("blue"); //returns nan

parseint()方法還有基模式,可以把二進位制、八進位制、十六進製制或其他任何進製的字串轉換成整數。基是由parseint()方法的第二個引數指定的,所以要解析十六進製制的值,需如下呼叫parseint()方法:

parseint("af", 16); //returns 175

當然,對二進位制、八進位制,甚至十進位制(預設模式),都可以這樣呼叫parseint()方法:

parseint("10", 2); //returns 2

parseint("10", 8); //returns 8

parseint("10", 10); //returns 10

如果十進位制數包含前導0,那麼最好採用基數10,這樣才不會意外地得到八進位制的值。例如:

parseint("010"); //returns 8

parseint("010", 8); //returns 8

parseint("010", 10); //returns 10

在這段**中,兩行**都把字串 "010 "解析成了乙個數字。第一行**把這個字串看作八進位制的值,解析它的方式與第二行**(宣告基數為8)相同。最後一行**宣告基數為10,所以inum3最後等於10。

parsefloat()方法與parseint()方法的處理方式相似,從位置0開始檢視每個字元,直到找到第乙個非有效的字元為止,然後把該字 符之前的字串轉換成數字。不過,對於這個方法來說,第乙個出現的小數點是有效字元。如果有兩個小數點,第二個小數點將被看作無效 的,parsefloat()方法會把這個小數點之前的字串轉換成數字。這意味著字串 "22.34.5 "將被解析成22.34。

使用parsefloat()方法的另一不同之處在於,字串必須以十進位制形式表示浮點數,而不能用八進位制形式或十六進製制形式。該

方法會忽略前導0,所以八進位制數0908將被解析為908。對於十六進製制數0xa,該方法將返回nan,因為在浮點數中,x不是有效字元。此外,parsefloat()也沒有基模式。

下面是使用parsefloat()方法的示例:

parsefloat("1234blue"); //returns 1234.0

parsefloat("0xa"); //returns nan

parsefloat("22.5"); //returns 22.5

parsefloat("22.34.5"); //returns 22.34

parsefloat("0908"); //returns 908

parsefloat("blue"); //returns nan

2. 強制型別轉換

還可使用強制型別轉換(type casting)處理轉換值的型別。使用強制型別轉換可以訪問特定的值,即使它是另一種型別的。

ecmascript中可用的3種強制型別轉換如下:

boolean(value)——把給定的值轉換成boolean型;

number(value)——把給定的值轉換成數字(可以是整數或浮點數);

string(value)——把給定的值轉換成字串。

用這三個函式之一轉換值,將建立乙個新值,存放由原始值直接轉換成的值。這會造成意想不到的後果。

當要轉換的值是至少有乙個字元的字串、非0數字或物件(下一節將討論這一點)時,boolean()函式將返回true。如果該值是空字串、數字0、undefined或null,它將返回false。

可以用下面的**段測試boolean型的強制型別轉換。

boolean(""); //false – empty string

boolean("hi"); //true – non-empty string

boolean(100); //true – non-zero number

boolean(null); //false - null

boolean(0); //false - zero

boolean(new object()); //true – object

number()的強制型別轉換與parseint()和parsefloat()方法的處理方式相似,只是它轉換的是整個值,而不是部分值。還記 得嗎,parseint()和parsefloat()方法只轉換第乙個無效字元之前的字串,因此 "4.5.6 "將被轉換為 "4.5 "。用number()進行強制型別轉換, "4.5.6 "將返回nan,因為整個字串值不能轉換成數字。如果字串值能被完整地轉換,number()將判斷是呼叫parseint()方法還是呼叫 parsefloat()方法。下表說明了對不同的值呼叫number()方法會發生的情況:

用  法 結  果

number(false) 0

number(true) 1

number(undefined) nan

number(null) 0

number( "5.5 ") 5.5

number( "56 ") 56

number( "5.6.7 ") nan

number(new object()) nan

number(100) 100

最後一種強制型別轉換方法string()是最簡單的,因為它可把任何值轉換成字串。要執行這種強制型別轉換,只需要呼叫作為引數傳遞進來的值的 tostring()方法,即把1轉換成 "1 ",把true轉換成 "true ",把false轉換成 "false ",依此類推。強制轉換成字串和呼叫tostring()方法的唯一不同之處在於,對null或undefined值強制型別轉換可以生成字串而不引 發錯誤:

var s1 = string(null); //"null"

var onull = null;

var s2 = onull.tostring(); //won』t work, causes an error

3. 利用js變數弱型別轉換

舉個小例子,一看,就會明白了。

上例利用了js的弱型別的特點,只進行了算術運算,實現了字串到數字的型別轉換,不過這個方法還是不推薦的。

JS 型別轉換 強制型別轉換

js 型別轉換 強制型別轉換 一 parseint 將其他型別轉換成number型別的整數 注意 string number 1 字串中值的首字元必須是數字,轉換後才能得到具體的值 否則得到nan 2 只轉換從首字元開始的連續數字 如 2b345 轉換後只得到2 3 除了string,其他型別轉換後...

js型別轉換

js varscolor blue alert scolor.length outputs 4 js varbfound false alert bfound.tostring outputs false js varinum1 10 varfnum2 10.0 alert fnum2.tostri...

js 型別轉換

function str function tostr val function todstr val,dv function trim str function lenb str function ismobile str d 13 d 15 d if reg.test trim str retu...