好吧,这是我知道的一些区别:
空字符串的
""
计算结果为a0
,而其parseInt
计算结果为NaN
。IMO,空白字符串应为NaN
。+'' === 0; //true
isNaN(parseInt(‘’,10)); //true
一元的
+
行为更像是parseFloat
因为它也接受小数。
parseInt另一方面,当看到非数字字符(例如要用作小数点的句点)时,它将停止解析
.。
+'2.3' === 2.3;//trueparseInt('2.3',10) === 2; //true
parseInt
并 从左到右parseFloat
解析并构建字符串。如果他们看到一个无效字符,它将返回已解析的内容(如果有)为数字,如果没有解析为数字,则返回。 __NaN
+另一方面,
NaN如果整个字符串不可转换为数字,则一元将返回。
parseInt('2a',10) === 2; //trueparseFloat('2a') === 2; //trueisNan(+'2a'); //true
- 如@Alex K.的评论所示,
parseInt
并将parseFloat
按字符进行解析。这意味着十六进制和指数符号将失败,因为x
和e
将被视为非数字组件(至少在base10上)。
一元
+将正确地转换它们。
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.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)