在Javascript中,属性中的所有键都是字符串,对吗?因此,换句话说,
此代码:
var object = {
car: 'tesla'
};
和此代码相同:
var object = {
'car': 'tesla'
};
但是为什么这样,我可以使用car
但不使用此键来访问object["car"]
键:object[car]
换句话说,如果名为car
的键已经被转换为字符串,为什么我需要将名为car
的键括在引号中?
我读了此thread,但无法在这个特定问题上得到明确的答案。希望有人帮助。
在object initializer内,identifier被当作属性名称。
括号表示法property accessors中使用的值是一个表达式。
如果在表达式中使用标识符,则将其视为变量名。
由于您可以使用方括号表示法中的任何表达式,因此可以动态生成值:
object[function_that_returns_car(argument_from_local_scope)]
…这就是使括号表示法有用的原因。