高程三第三章之數值轉換

有 3 個函數可以把非數值轉換為數值:Number()、parseInt()和 parseFloat()。第一個函數,即轉型函數 Number()可以用于任何數據類型,而另兩個函數則專門用于把字符串轉換成數值。這 3 個函數對于同樣的輸入會有返回不同的結果。

Number()函數的轉換規則如下。
  • 如果是 Boolean 值,true 和 false 將分別被轉換為 1 和 0。
  • 如果是數字值,只是簡單的傳入和返回。
  • 如果是 null 值,返回 0。
  • 如果是 undefined,返回 NaN。
  • 如果是字符串,遵循下列規則:
  • 如果字符串中只包含數字(包括前面帶正號或負號的情況),則將其轉換為十進制數值,即"1"會變成 1,"123"會變成 123,而"011"會變成11(注意:前導的零被忽略了);
    • 如果字符串中包含有效的浮點格式,如"1.1",則將其轉換為對應的浮點數值(同樣,也會忽
      略前導零);
    • 如果字符串中包含有效的十六進制格式,例如"0xf",則將其轉換為相同大小的十進制整
      數值;
    • 如果字符串是空的(不包含任何字符),則將其轉換為 0;
    • 如果字符串中包含除上述格式之外的字符,則將其轉換為 NaN。
    • 如果是對象,則調用對象的 valueOf()方法,然后依照前面的規則轉換返回的值。如果轉換的結果是 NaN,則調用對象的 toString()方法,然后再次依照前面的規則轉換返回的字符串值。

由于 Number()函數在轉換字符串時比較復雜而且不夠合理,因此在處理整數的時候更常用的是parseInt()函數。parseInt()函數在轉換字符串時,更多的是看其是否符合數值模式。它會忽略字符串前面的空格,直至找到第一個非空格字符。如果第一個字符不是數字字符或者負號,parseInt()就會返回 NaN;也就是說,用parseInt()轉換空字符串會返回 NaN(Number()對空字符返回 0)。如果第一個字符是數字字符,parseInt()會繼續解析第二個字符,直到解析完所有后續字符或者遇到了一個非數字字符。例如,"1234blue"會被轉換為 1234,因為"blue"會被完全忽略。類似地,"22.5"會被轉換為 22,因為小數點并不是有效的數字字符。
??這個函數提供第二個參數:轉換時使用的基數(即多少進制)。如果知道要解析的值是十六進制格式的字符串,那么指定基數 16 作為第二個參數,可以保證得到正確的結果,例如:var num = parseInt("0xAF", 16); //175。實際上,如果指定了 16 作為第二個參數,字符串可以不帶前面的"0x",如下所示:

var num1 = parseInt("AF", 16); //175
var num2 = parseInt("AF"); //NaN

parseFloat()只解析十進制值。輸出可以為整數。十六進制格式的字符串始終轉化為0。例如:

parseFloat("1.0000"); //輸出1
parseFloat(0xA); // 輸出10,因為輸入為數字
parseFloat("0xA"); //輸出0,因為輸入為字符串
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 什么是 JavaScript 語言? JavaScript 是一種輕量級的腳本語言。所謂“腳本語言”(script...
    oWSQo閱讀 1,818評論 0 1
  • 第1章 JavaScript 簡介 JavaScript 具備與瀏覽器窗口及其內容等幾乎所有方面交互的能力。 歐洲...
    力氣強閱讀 1,180評論 0 0
  • 這可能是,不,這確實是一篇引不起別人有讀下去的興趣的文章,或者說也不是文章,就是一篇抒發心情,也可能是傳...
    青菜與蘋果閱讀 448評論 0 0