3 回答
TA贡献1802条经验 获得超5个赞
请看 这个答案 更完整的案例
空字符串 ""
计算结果为 0
,同时 parseInt
评估为 NaN
..imo,空字符串应该是 NaN
.+'' === 0; //trueisNaN(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
被视为非数字部件(至少在基础10上)。 一元 +
会正确地转化他们。 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.
TA贡献2039条经验 获得超7个赞
一元加并不是对所有虚假的价值观一视同仁,但它们都是假的。 一元加发送 true
对1,但是 "true"
到 NaN
.另一方面, parseInt
对于非纯数字的字符串,则更自由。 parseInt('123abc') === 123
,鉴于 +
报告 NaN
.Number
将接受有效的十进制数,而 parseInt
只要把所有的东西都降到十进制以上。因此 parseInt
模拟C行为,但对于评估用户输入可能并不理想。 两者都在字符串中修剪空格。 parseInt
,设计得很差 解析器
,接受八进制和十六进制输入。一元加只需要十六进制。
Number
null
false
""
添加回答
举报