在JavaScript中,表示數字的方式有兩種,一種是是實際數字(例如42),或是字符串(例如'42')。

如果使用嚴格的比較(===)來比較兩者,這兩者是不相等的,因為它們是兩種不同類型的數據。

var num1 = 42;

var num2 = '42';

if (num1 === num2) {

    console.log(true);

} else {

    console.log(false);

} 讓我們看看將字符串轉換為數字的三種不同方法。

parseInt() #

parseInt()方法將字符串轉換為整數(整數)。

它接受兩個參數。第一個參數是要轉換的字符串。第二個參數叫做radix(基數)。這是數學系統中使用的基數。對于我們的使用,它永遠是10,實際上第二個參數常??梢允÷?。

parseFloat() #

parseFloat()方法將字符串轉換為浮點型數值(帶小數點的數字)。您甚至可以傳入包含隨機文本的字符串。

var text = '3.14someRandomStuff';

var pointNum = parseFloat(text);

// returns 3.14

Number() #

Number()方法將字符串轉換為數字。

有時它是一個整數。有它是一個浮點數。如果你傳入一個帶有隨機文本的字符串,你會得到NaN一個“Not a Number”的首字母縮寫詞。

由于這種不一致,它是一個不太安全的選擇。建議使用parseInt()和parseFloat()。如果您知道所需數字的格式,請使用用它們。如果你希望當判斷的字符串中含有其它非數字字符時,返回的是NaN,Number()則實際上可能是更好的選擇。

// Convert strings

Number('123'); // returns 123

Number('12.3'); // returns 12.3

Number('3.14someRandomStuff'); // returns NaN

Number('42px'); // returns NaN