在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