这行之间有什么区别:
var a = parseInt("1", 10); // a === 1
这条线
var a = +"1"; // a === 1
此jsperf测试表明,假设适用于node.js!,在当前的chrome版本中,一元运算符要快得多。
如果我尝试转换不是数字的字符串,都将返回NaN:
NaN
var b = parseInt("test" 10); // b === NaN var b = +"test"; // b === NaN
所以我什么时候应该更喜欢使用parseInt一元加号(尤其是在node.js中)???
parseInt
编辑 :和双波浪号运算符有~~什么区别?
~~
好吧,这是我知道的一些区别:
空字符串的""计算结果为a 0,而其parseInt计算结果为NaN。IMO,空白字符串应为NaN。
""
0
+'' === 0; //true
isNaN(parseInt(‘’,10)); //true
一元的+行为更像是parseFloat因为它也接受小数。
+
parseFloat
parseInt另一方面,当看到非数字字符(例如要用作小数点的句点)时,它将停止解析.。
.
+'2.3' === 2.3; //true parseInt('2.3',10) === 2; //true
+另一方面,NaN如果整个字符串不可转换为数字,则一元将返回。
parseInt('2a',10) === 2; //true parseFloat('2a') === 2; //true isNan(+'2a'); //true
x
e
一元+将正确地转换它们。
parseInt('2e3',10) === 2; //true. This is supposed to be 2000 +'2e3' === 2000; //true. This one's correct. parseInt("0xf", 10) === 0; //true. This is supposed to be 15 +'0xf' === 15; //true. This one's correct.