javascript中的某些操作会返回意外结果。一个是非常奇怪的:
[] + 1 = "1"
有人可以解释为什么会这样吗?
答案 0 :(得分:4)
[]
被转换为空字符串。所以“”+ 1 => “1”(数字也转换为字符串)
答案 1 :(得分:1)
Javascript在不同类型之间添加的规则如下:
鉴于以下补充。
value1 + value2
要评估此表达式,请执行以下步骤(第11.6.1节): 将两个操作数转换为基元(数学符号,而不是JavaScript):
prim1 := ToPrimitive(value1)
prim2 := ToPrimitive(value2)
省略PreferredType,因此非日期的数字,日期的字符串。 如果prim1或prim2是一个字符串,则将两者都转换为字符串并返回结果的串联。
否则,将prim1和prim2都转换为数字并返回结果的总和。
在这种情况下,数组将转换为空字符串,然后+执行字符串连接
答案 2 :(得分:1)