我期待 JavaScript 将具有重复属性的对象视为无效而拒绝,但在某些情况下它会接受它们。
{"a":4,"a":5}
导致SyntaxError
至少在 Firefox 和 Chrome 中,由于属性a
被定义了两次,这似乎很明显。
然而({"a":4,"a":5})
,评估得很好,并{"a":5}
在 Firefox 和 Chrome 中产生了一个对象。
为什么接受带括号的表达式?
总结回答:第一个例子根本不是一个对象的构造,而是一个标记语句块。对象中的重复属性完全有效,在这种情况下最后一个定义获胜。
非常感谢你的回答!