歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

JavaScript parseInt函數詳解

JavaScript全局 parseInt 函數的總結:parseInt(numString, redix);

numString 將要被轉換為Int的字符串。

注意點:

1、可為數字或字符串, 不管怎樣都會使用String(numString)將其轉換成字符串; 如: parseInt(010); // 8  parseInt("010"); // 10

2、如果numString前後有空格,那麼將會忽略空格,如 " 23 ", 將會被解析成 "23";

3、如果numString以數字開頭,字母結尾,解析的時候則會從字母的地方終止,並返回已解析的數字。

redix 要轉換的進制數,該值的范圍是 2 - 36。

注意點:

一、如果用戶指定了該值:

不管指定的值是數字還是字符串,parseInt底層會使用Number對其進行轉換,

轉換後得到的值為0或者NaN,都會忽略,仍使用默認值 10,否則判斷是否是否位於 2-36中,如果不是則返回NaN。

如 parseInt("31", 0)/parseInt("31", "aaa") 等價於 parseInt("31", 10)

二、如果未指定該值:

1、如果 numString 以0x開頭,則該值的默認值是 16;

2、如果 numString 以0開頭,ECMAScript 3 環境該值默認為8,ECMAScript 5已經禁止這種做法,該值默認為10,所以視執行環境而定。

最佳實踐: 使用parseInt時指定redix參數總是有必要的,代碼可讀性強,程序穩定。

parseInt("1", 0); // 1 等價於 parseInt("1", 10)

parseInt("1", "aaa"); // 1 等價於 parseInt("1", 10)

parseInt("2", 1); // NaN ,進制解析異常

parseInt("010"); // 8/10 視環境而定 String("010");// 8/10

parseInt(010); // 8  String(010);// 8

parseInt(0x10); // 16 String(0x10);// 16

parseInt("0x10"); // 16  (String("0x10");// "0x10" ) 等價於 parseInt("0x10", 16)// 16

parseInt(" 23 "); // 23

parseInt(" 23 abc"); // 23

parseInt(" 23abc "); // 23

["1", "2", "3"].map(parseInt); // ["1", NaN, NaN]

定義和用法

parseInt() 函數可解析一個字符串,並返回一個整數。

當參數 radix 的值為 0,或沒有設置該參數時,parseInt() 會根據 string 來判斷數字的基數。

當忽略參數 radix , JavaScript 默認數字的基數如下:

  • 如果 string 以 "0x" 開頭,parseInt() 會把 string 的其余部分解析為十六進制的整數。
  • 如果 string 以 0 開頭,那麼 ECMAScript v3 允許 parseInt() 的一個實現把其後的字符解析為八進制或十六進制的數字。
  • 如果 string 以 1 ~ 9 的數字開頭,parseInt() 將把它解析為十進制的整數。

語法

parseInt(string, radix)

 

參數描述 string 必需。要被解析的字符串。 radix 可選。表示要解析的數字的基數。該值介於 2 ~ 36 之間。

 


浏覽器支持

所有主要浏覽器都支持 parseInt() 函數


提示和注釋

注意: 只有字符串中的第一個數字會被返回。

注意: 開頭和結尾的空格是允許的。

注意:如果字符串的第一個字符不能被轉換為數字,那麼 parseFloat() 會返回 NaN。

注意:在字符串以"0"為開始時舊的浏覽器默認使用八進制基數。ECMAScript 5,默認的是十進制的基數。


實例

實例

我們將使用 parseInt() 來解析不同的字符串:

<script>

document.write(parseInt("10") + "<br>");
document.write(parseInt("10.33") + "<br>");
document.write(parseInt("34 45 66") + "<br>");
document.write(parseInt(" 60 ") + "<br>");
document.write(parseInt("40 years") + "<br>");
document.write(parseInt("He was 40") + "<br>");

document.write("<br>");
document.write(parseInt("10",10)+ "<br>");
document.write(parseInt("010")+ "<br>");
document.write(parseInt("10",8)+ "<br>");
document.write(parseInt("0x10")+ "<br>");
document.write(parseInt("10",16)+ "<br>");

< /script>

以上實例輸出結果:

10
10
34
60
40
NaN

10
10
8
16
16

注意:舊浏覽器由於使用舊版本的ECMAScript(ECMAScript版本小於ECMAScript 5,當字符串以"0"開頭時默認使用八進制,ECMAScript 5使用的是十進制),所以在解析("010") 將輸出8。

Copyright © Linux教程網 All Rights Reserved