理解JavaScript对象初始化键

7
以下两者有什么不同吗?
var object1= {
  a: 0,
  b: 1,
  c: 2
};

vs

var object2= {
  'a': 0,
  'b': 1,
  'c': 2
};
4个回答

13

在你的示例中,没有任何区别。如果你想要属性名是数字或者包含空格(这两种都有效,但有点奇怪),那么就会有区别。

var object3 = {
  '123': 0,
  'hello world' : 1
}

// This is valid
alert(object3['123']); // -> 0
alert(object3['hello world']); // -> 1

// This is not
alert(object3.123); // -> Syntax Error
如果您有两分钟的时间,您可能会发现这个页面非常有帮助。
http://bonsaiden.github.com/JavaScript-Garden/#object.general

是的,JavaScript Garden非常棒!它解释得非常清楚。 - jessegavin
我不会链接到JavaScript Garden,主要是因为它没有详细的说明 - 我们没有旨在涵盖该主题的所有内容,只包括最奇怪的部分;我本来想建议MDC,但他们关于对象的页面已经严重过时了(JavaScript 1.0?真的吗?),所以我猜现在这样就可以了;) - Yi Jiang

6

jessegavin已经解释了你所询问的一切,但是我想补充一件你未提及但将来可能需要了解的事情。

以下所有内容都是有效的JavaScript对象文字:

{  a:  0,  b:  1,  c:  2 }
{ 'a': 0, 'b': 1, 'c': 2 }
{ "a": 0, "b": 1, "c": 2 }

但是只有最后一个是有效的JSON。在JSON中没有正确引用键可能是程序生成无效JSON的主要原因,而无效JSON似乎是人们在使用AJAX时遇到问题的主要来源。

虽然不是你问题的确切答案,但它仍然相关,可能会在未来节省您一些麻烦。


0

没有区别。两种语法都是正确的。


0

这两者是相等的,因为在JavaScript中,对象属性可以是字符串或纯文本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接