【问题标题】:Why +[] or +"" equal to 0 in javascript [duplicate]为什么+ []或+“”在javascript中等于0 [重复]
【发布时间】:2016-08-27 10:21:33
【问题描述】:

我知道在 javascript 中,Array 不支持+ 操作,所以+[] 将转换为+ [].toString(),但我不知道为什么+"" 等于零。

【问题讨论】:

  • 我认为这是一个一元运算符。
  • 它转换为零,因为 ECMAScript 规范中有一个特定规则要求在执行数字转换时以这种方式转换空字符串。
  • @evolutionxbox +[] 等于 + [].toString()
  • @squint 啊。这是有道理的
  • 一个相关问题:All falsey values in JavaScript。对这个问题的严厉回答令人惊讶……尤其是考虑到它所产生的启发性的 cmets。

标签: javascript


【解决方案1】:

因为 空字符串 ("") 在 javascript 中是 false (因为 Javascript 是 ECMAScript 的一种方言,ECMAScript 语言规范明确定义了这种行为) 和 @987654324 @一元运算符false转换为0

参考http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf

【讨论】:

  • @evolutionxbox 现在检查..
  • 这不是因为空字符串是假的(我假设你的意思是“假”)。还有其他错误值未转换为零。
  • 为了迂腐,"" 是错误的(并非严格错误),所以先强制转换为布尔值,然后再强制转换为数字。
  • @squint 所有 false、0、空字符串 '' 和 ""、NaN、undefined 和 null 始终被评估为 false;其他一切都是真的。
  • @void:它们是“假的”,而不是 false,这是一个独特的值,但这与它如何转换为数字没有任何关系。如果它们总是被评估为false,那么"" == null 将是true
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-28
  • 2022-01-25
  • 2011-02-01
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
相关资源
最近更新 更多