对象声明:使用字符串作为键是否有区别?

4

在stackoverflow上有一些关于JSON是对象字面量表示法的子集的问题。但我没有找到我的一个具体问题的答案。

这两者之间有什么区别吗?

var obj = {keyName : "value"};

并且

var obj = {"keyName" : "value"};

在JavaScript中?

1
这不是“字符串作为键”。键始终为字符串。这只是引号是否出现的符号问题。更好的标题应该是“引用键是否有区别?” - user663031
2个回答

5

是的。两者之间的区别在于后者的文件大小将增加两个字节,以解释代码中额外的两个"字符。

否则,你给出的这两个示例对象之间没有任何区别。

var obj = {keyName : "value"};

obj.keyName;       /* "value" */
obj["keyName"];    /* "value" */

var obj = {"keyName" : "value"};

obj.keyName;       /* "value" */
obj["keyName"];    /* "value" */

5

没有区别,除了第二种会在你的代码中添加两个额外的"字符,这将花费你两个额外的字节。

声明对象属性时使用或不使用引号的原因是因为你可以尝试:

var obj = {"key Name" : "value"};

并且仍然可以像之前一样访问它

obj['key Name']

但不是

var obj = {key Name : "value"};

考虑到这种方式,存在一些差异。

1
OP的问题询问keyName"keyName"之间是否有区别,而不是key Name"key Name" - James Donnelly
4
解释两种表示法的区别时,需要解释为什么两种表示法都被使用。无论如何,感谢你让我来编辑答案。 - Naeem Shaikh

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