这条线有什么区别:
var a = parseInt("1", 10); // a === 1
这条线
var a = +"1"; // a === 1
这个jsperf 测试表明,一元运算符在当前的 chrome 版本中要快得多,假设它是针对 node.js 的!?
如果我尝试转换不是数字的字符串都返回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.