也许只是一个愚蠢的问题,但是,我希望能对以下行为做出解释:
var obj = {
    key : "val1",
    123 : "val2"
};
obj.key; // "val1"
obj.123; // Syntax error: missing; before statement
obj[123]; // "val2"为什么obj.key与obj.123不同,尽管它们都被声明为obj的键。
以这种方式访问对象文本obj.123是错误的。
以下列方式声明对象是正确的吗?我测试过的浏览器是IE9、火狐和chrome,它们都很好用。
var obj = {
    123 : "val1"
};发布于 2012-01-27 09:06:40
JavaScript允许您使用几乎任何字符串作为对象属性名称,但是当使用点符号访问属性时,您应该只使用有效的JS标识符--它们必须以字母、下划线或美元符号开头。因此,对于不符合有效标识符规则的属性名称,您必须使用括号符号访问它们。
尽管括号表示法适用于数字,但幕后JS将将该数字转换为字符串。
https://stackoverflow.com/questions/9030940
复制相似问题