6
如果您评估{} + 1
,您会得到1
,但如果将相同的表达式分配给变量(例如x = {} + 1
),则该变量将包含字符串"[object Object]1"
。JavaScript的分配改变了加法操作的语义?
为什么赋值会改变右侧表达式的语义?右手表达不应该是“上下文无关”吗?
如果您评估{} + 1
,您会得到1
,但如果将相同的表达式分配给变量(例如x = {} + 1
),则该变量将包含字符串"[object Object]1"
。JavaScript的分配改变了加法操作的语义?
为什么赋值会改变右侧表达式的语义?右手表达不应该是“上下文无关”吗?
{} + 1
被解释为一个码块,随后+1
,其评估对1
。 OTOH:
new Object() + 1
你会看到"[object Object]1"
结果:
x = {} + 1
如果您改变了原来的语句被评估为new Object()
加1
。
优秀!一个非常明确的答案!谢谢。 – MSX
在什么情况下你能得到'1'的结果? –
你不会在任何地方得到'1'。在'node.js'中,你不明白它。在Chrome和Firefox中是的。 – thriqon
http://jsfiddle.net/praveen_jegan/jgMGs/'{} + 1!== 1' – Praveen