这个
有什么区别var person = {
name: "Bob",
age: "99"
};
这个?
var person = {
"name": "Bob",
"age": "99"
};
或者他们的意思是一样的吗?如果他们这样做,如果我希望密钥成为对象怎么办?如果name
表示"name"
?
答案 0 :(得分:4)
没有区别。仅当您要将字符串用作属性名称,但该字符串不是有效标识符时,才需要引号。此外,
对象属性名称可以是任何有效的JavaScript字符串,也可以是可以转换为字符串的任何内容,包括空字符串。但是,任何不是有效JavaScript标识符的属性名称(例如,具有空格或破折号的属性名称,或以数字开头)只能使用方括号表示法访问。
答案 1 :(得分:0)
在这种情况下它们是等效的,但引用的版本允许您使用不是有效JS标识符的键。例如,这不起作用:
{ -test: 42 }
虽然这样做:
{ "-test": 42 }
无论如何都不能将对象指定为键。
答案 2 :(得分:0)
他们的意思是一样的。有效键是标识符,字符串文字或数字文字。见http://ecma-international.org/ecma-262/5.1/#sec-11.1.5
您还不能将对象本身用作键,但是为EcmaScript 6提议的WeakMap对象将解决此问题。见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap