也许只是一个愚蠢的问题,但是, 我希望得到以下行为的解释:
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,firefox和chrome,对于所有这些浏览器都运行良好。
var obj = {
123 : "val1"
};
答案 0 :(得分:4)
JavaScript允许您使用任何字符串作为对象属性名称,但是当使用点表示法访问属性时,您应该只使用属于有效JS标识符的属性名称 - 必须以字母开头,下划线或美元符号。因此,对于不符合有效标识符规则的属性名称,您必须使用括号表示法访问它们。
虽然括号表示法使用数字,但在幕后,JS会将该数字转换为字符串。