为什么+;[]或+&引用&引用;在javascript中等于0

为什么+;[]或+&引用&引用;在javascript中等于0,javascript,Javascript,我知道在javascript中,Array不支持+操作,因此+[]将被转换为+[].toString(),但我不明白为什么+'等于零。因为空字符串(“”)在javascript中是false(因为Javascript是ECMAScript的一种方言,ECMAScript语言规范明确定义了这种行为)和+一元运算符将false转换为0 Reference:我认为这是一个一元运算符。它会转换为零,因为ECMAScript规范中有一条特定规则,要求在执行数字转换时以这种方式转换空字符串。@evoluti

我知道在javascript中,
Array
不支持
+
操作,因此
+[]
将被转换为
+[].toString()
,但我不明白为什么
+'
等于零。

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


Reference

我认为这是一个一元运算符。它会转换为零,因为ECMAScript规范中有一条特定规则,要求在执行数字转换时以这种方式转换空字符串。@evolutionxbox
+[]
等于
+[].toString()
@斜视啊。这是一个有意义的问题:。对这个问题的严厉回答令人惊讶……特别是考虑到它所产生的启发性评论。@evolutionxbox现在检查。。这不是因为空字符串是假的(我想你的意思是“假”)。还有其他不转换为零的假值。
是假值(不是严格的假值),所以强制布尔值首先出现,然后布尔值才是数字。@斜视所有假值、0、空字符串“”和“”、NaN、未定义和null始终计算为假值;其他所有值都为真。@void:它们是“假值”,而不是
false
,这是一个不同的值,但这与它如何转换为数字没有任何关系。如果它们总是被计算为
false
,那么
“==null
将是
true