为啥 +"" 在 JavaScript 中返回 0? [复制]

Posted

技术标签:

【中文标题】为啥 +"" 在 JavaScript 中返回 0? [复制]【英文标题】:Why does +"" returns 0 in JavaScript? [duplicate]为什么 +"" 在 JavaScript 中返回 0? [复制] 【发布时间】:2019-12-15 23:54:11 【问题描述】:

我刚刚经过 baNaNa 就到了这里 console.log(+"")

0 我找不到可能的解释。

【问题讨论】:

一元加号在内部执行toNumber()。检查this 【参考方案1】:

使用+""与使用Number("")相同。它将字符串转换为数字。字符串为空,因此值为0

console.log(+""); // 0
console.log(Number("")); // 0
console.log(+("0")); // 0
console.log(Number("0")); // 0
console.log(+"123"); // 123
console.log(Number("123")); // 123
console.log(-""); // same as `+""` but also negates the number
console.log(-"123"); // so this will be converted to a number, but also become a negative value

这种解析数字的方式与parseFloatparseInt 的行为完全不同。 (主要区别在于Number 尝试获取任何类型变量的数值,即布尔值、字符串、数字、对象......而parseFloat 只是从字符串中读取数字)。

console.log(parseFloat("")); // NaN
console.log(+("")); // 0
console.log(parseFloat("1st")); // 1
console.log(+("1st")); // NaN

【讨论】:

以上是关于为啥 +"" 在 JavaScript 中返回 0? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 +"" 在 JavaScript 中返回 0? [复制]

为啥 TRUE == "TRUE" 在 R 中为 TRUE?

为啥显示在“推送”中的提交没有显示在“历史”中?

为啥在 HTML 中使用 href="// 而不是 href="http://? [复制]

为啥我们不应该在 py 脚本中使用 sys.setdefaultencoding("utf-8") ?

为啥我们不应该在 py 脚本中使用 sys.setdefaultencoding("utf-8") ?