根据MDN
If the argument cannot be converted into a number, it returns
NaN
能否解释一下为什么 Number('')
和 Number(null)
返回 0
因为没有有效的数字。
首先我认为这可能是因为它们是错误的值。但后来我发现 Number(undefined)
不返回 0
。
console.log(Number(undefined)); //NaN
console.log(Number(null)); //0
console.log(Number('')); //0
最佳答案
纯粹是因为规范是这么说的,here并链接到here 。据我所知,没有比这更深层的逻辑了。第二个链接显示了 Number
(当作为函数调用时)根据输入类型执行的操作:
- Undefined => Return NaN.
- Null => Return +0.
- Boolean => If argument is true, return 1. If argument is false, return +0.
- Number => Return argument (no conversion).
- String => See grammar and conversion algorithm below.
- Symbol => Throw a TypeError exception.
- Object => Apply the following steps:
- Let primValue be ? ToPrimitive(argument, hint Number).
- Return ? ToNumber(primValue).
“下面的语法和转换算法”除其他外还指出:
The MV [mathematical value] of StringNumericLiteral ::: [empty] is 0.
关于javascript - 为什么 Number ('' ) 和 Number ('null' ) 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55124584/