parseInt()和Number()有什么区别?

将字符串转换为数字时parseInt()Number()行为如何不同?

回答:

嗯,它们在语义上是不同的,Number称为函数的构造函数执行类型转换并parseInt执行 解析 ,例如:

// parsing:

parseInt("20px"); // 20

parseInt("10100", 2); // 20

parseInt("2e1"); // 2

// type conversion

Number("20px"); // NaN

Number("2e1"); // 20, exponential notation

请记住,如果parseInt在字符串上检测到前导零,它将以八进制为基础来解析数字,这在标准的新版本ECMAScript

5中已更改,但是要花很长时间才能进入浏览器实现((与ECMAScript3不兼容),也parseInt将忽略与当前使用的基数的任何数字都不对应的结尾字符。

Number构造函数不检测八进制:

Number("010");         // 10

parseInt("010"); // 8, implicit octal

parseInt("010", 10); // 10, decimal radix used

但是它可以用十六进制表示法处理数字,就像parseInt

Number("0xF");   // 15

parseInt("0xF"); //15

另外,用于执行数值类型转换的一种广泛使用的构造是一元+运算符(p。72),它等效于将Number构造函数用作函数:

+"2e1";   // 20

+"0xF"; // 15

+"010"; // 10

以上是 parseInt()和Number()有什么区别? 的全部内容, 来源链接: utcz.com/qa/414618.html

回到顶部