javascript - 为什么 Number ('' ) 和 Number ('null' ) 返回 0

标签 javascript

根据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/

相关文章:

javascript - 希望使用 javascript 将网页另存为文本文件

javascript - Jquery 帖子不触发两次

javascript - 将 Gatsby.js 用于动态和静态 Web 应用程序

javascript - 如何 Hook 到快速 session 创建事件

javascript - 如何在 JavaScript 中 1 秒内准确执行 1000 次代码

javascript - 将 jQuery slider 最大值设置为无限制?

javascript - 纯 JavaScript 可以实现只读属性吗?

javascript - jQuery formValidation 在按 Enter 键时不提交表单

javascript - 使用 jquery 将 css 类添加到行的特定列

javascript - jquery filter() 在我的代码中返回函数困惑