JavaScript型別轉換

2021-05-11 00:03:07 字數 3841 閱讀 6085

方法主要有三種

轉換函式、強制型別轉換、利用js變數弱型別轉換。

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的弱型別的特點,只進行了算術運算,實現了字串到數字的型別轉換,不過這個方法還是不推薦的。

javascript 型別轉換

var num number true console.log typeof num num 結果 number 1 var num number false console.log typeof num num 結果 number 0 var num number null console.log...

JavaScript 型別轉換

僅針對字串 轉換規則 1.忽略字串前面的空格,直到找到第乙個非空格符 2.如果第乙個字元不是數字或負號,返回 nan parseint nan 3.如果第乙個字元是數字字元,繼續解析第二個字元,直到解析完所有後續字元或遇到乙個非數字字元 parseint 9527great 9527 parsein...

javascript資料型別轉換

isnan 判斷是否不是乙個有效數字,是有效數字返回false,否則返回true isnan 會隱式呼叫number 方法,把值轉強制換成數字資料型別 非強制轉換成數字 parseint 從左到右查詢數字,遇到非數字就停止 parsefloat 比parseint多識別乙個小數點 string 轉換...