在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