JavaScript和对象转换

JavaScript和对象转换,javascript,Javascript,我有一个关于JS中类型转换的问题 {} + 4 // 4 4 + {} // '4[object Object]' 但是 语言规范说{}和new Object()声明是相同的,那么为什么JS引擎会这样做呢?语言规范说{}和new Object()声明是相同的是的。但关键是它们是声明。在{}+4的情况下,这不是一个声明。它被解析为一个空代码块(无op),后跟一元+,后跟一个4。如果你把它用括号括起来,({}+4),你会得到一个一致的结果,因为它现在是一个对象文字的声明。@Quentin-我认为列

我有一个关于JS中类型转换的问题

{} + 4 // 4
4 + {} // '4[object Object]'
但是


语言规范说{}和new Object()声明是相同的,那么为什么JS引擎会这样做呢?

语言规范说{}和new Object()声明是相同的
是的。但关键是它们是声明。在
{}+4
的情况下,这不是一个声明。它被解析为一个空代码块(无op),后跟一元
+
,后跟一个
4
。如果你把它用括号括起来,
({}+4)
,你会得到一个一致的结果,因为它现在是一个对象文字的声明。@Quentin-我认为列出的dupe与这个问题无关,因为它不处理逻辑运算符。@vlaz-它不是。那个笨蛋和我无关。“那是后来的编辑。”昆汀道歉道。我没有看到任何人的名字,我不知道如何检查节制行为(或者如果我能)。感谢您采取行动删除它。
4 + new Object() // '4[object Object]'
new Object() + 4 // '[object Object]4'