parseInt() 和 Number() 之间有什么区别?
2022-08-29 23:17:26
在将字符串转换为数字时,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
构造函数不检测隐式八进制数,但可以检测显式八进制表示法:Number
Number("010"); // 10
Number("0o10") // 8, explicit octal
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
typeof parseInt("123") => number
typeof Number("123") => number
typeof new Number("123") => object (Number primitive wrapper object)
前两个将为您提供更好的性能,因为它返回基元而不是对象。