在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