Javascript对象属性引号

时间:2012-02-08 11:34:55

标签: javascript object

假设我有以下对象:

var VariableName = {
    firstProperty: 1,
    secondProperty: 2
}

我是否必须将对象属性包装在这样的引号中?

var VariableName = {
    'firstProperty': 1,
    'secondProperty': 2
}

这是Single quotes in JavaScript object literal正确答案吗?

4 个答案:

答案 0 :(得分:27)

不,你不需要这样做。

引用对象键的唯一理由是

  • 属性名称由浏览器/ js引擎保留/使用(例如IE中的“class”)
  • 您的密钥中有特殊字符或空格

所以例如

var VariableName = {
    "some-prop": 42,  // needs quotation because of `-`
    "class": 'foobar' // doesn't syntatically require quotes, but it will fail on some IEs
    valid: 'yay' // no quotes required
};

答案 1 :(得分:4)

对象文字中的属性名称必须是字符串,数字或标识符。如果名称是有效的标识符,则您不需要引号,否则它们遵循与字符串相同的规则。

firstPropertysecondProperty都是有效的标识符,因此您不需要引号。

有关详细信息,请参阅the specification的第65页。

答案 2 :(得分:4)

如果属性名称是保留字(例如for,in,function,...),则只需使用属性周围的引号。这样就可以防止Javascript尝试将关键字解释为语言的一部分,并且很可能会出现语法错误。 此外,如果要在属性名称中使用空格,还必须使用引号。 如果您的属性名称只是普通名称而没有任何共谋可能或空格,您可以使用您喜欢的语法。

另一种需要引号的可能性是使用谷歌闭包编译器之类的Javascript minifiers,因为它倾向于替换所有属性名称。但是,如果将属性名称放在引号中,则闭包编译器会在编码时保留该属性。这在导出库中的对象或使用参数对象时具有一定的相关性。

答案 3 :(得分:1)

对于Javascript,您通常不必使用引号。如果您愿意,可以使用'",如果您的属性名称与JS保留字null之间存在冲突,则必须使用引号。你联系的答案似乎是正确的,是的。

对于JSON,you should use " around strings(包括对象属性名称)