为何Number("1"+null)是NaN?
我理解的应该是10
因为Number(null)是0
因为首先执行的"1" + null
是字符串拼接,字符串拼接的时候其他的类型的值会先转化成字符串。
这跟加法操作符的特性相关
如果有操作符是字符串,则应遵循如下规则
一般通过toString()转化(可以自己设置有优先级更高的Symbol.toPrimitive),如果是null或者undefined使用String()
String的转化规则如下
你想要实现=10
则应该 Number("1"+(null + 0))
把null
先转下数字,而不是直接转字符串
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
Number是一个函数调用,首先会将
"1" + null
的结果传递给 Number 这个内置的函数中"1" + null
的结果是字符串1null
这个字符串转换为 number 类型只能是
NaN
not a number