假设我有以下对象:
var VariableName = {
firstProperty: 1,
secondProperty: 2
}
我是否必须将对象属性包装在这样的引号中?
var VariableName = {
'firstProperty': 1,
'secondProperty': 2
}
答案 0 :(得分:27)
不,你不需要这样做。
引用对象键的唯一理由是
所以例如
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)
对象文字中的属性名称必须是字符串,数字或标识符。如果名称是有效的标识符,则您不需要引号,否则它们遵循与字符串相同的规则。
firstProperty
和secondProperty
都是有效的标识符,因此您不需要引号。
有关详细信息,请参阅the specification的第65页。
答案 2 :(得分:4)
如果属性名称是保留字(例如for,in,function,...),则只需使用属性周围的引号。这样就可以防止Javascript尝试将关键字解释为语言的一部分,并且很可能会出现语法错误。 此外,如果要在属性名称中使用空格,还必须使用引号。 如果您的属性名称只是普通名称而没有任何共谋可能或空格,您可以使用您喜欢的语法。
另一种需要引号的可能性是使用谷歌闭包编译器之类的Javascript minifiers,因为它倾向于替换所有属性名称。但是,如果将属性名称放在引号中,则闭包编译器会在编码时保留该属性。这在导出库中的对象或使用参数对象时具有一定的相关性。
答案 3 :(得分:1)
对于Javascript,您通常不必使用引号。如果您愿意,可以使用'
或"
,如果您的属性名称与JS保留字null
之间存在冲突,则必须使用引号。你联系的答案似乎是正确的,是的。
对于JSON,you should use "
around strings(包括对象属性名称)