javascript - 访问 JavaScript 对象字面量

标签 javascript

也许这只是一个愚蠢的问题,但是, 如果能解释以下行为,我将不胜感激:

var obj = {
    key : "val1",
    123 : "val2"
};

obj.key; // "val1"
obj.123; // Syntax error: missing; before statement
obj[123]; // "val2"

为什么 obj.keyobj.123 不同 尽管它们都被声明为 obj 的键。


以这种方式访问​​对象文字 obj.123 是错误的。

并且以下面的方式声明对象是正确的吗? 我测试过的浏览器是 IE9、firefox 和 chrome,它们都运行良好。

var obj = {
    123 : "val1"
};

最佳答案

JavaScript 允许您使用几乎任何字符串作为对象属性名称,但是当使用点符号访问属性时,您应该只使用有效的 JS 标识符的属性名称 - 必须以字母开头,下划线或美元符号。因此,对于不符合有效标识符规则的属性名称,您必须使用括号表示法访问它们。

虽然括号表示法适用于数字,但在幕后 JS 会将该数字转换为字符串。

关于javascript - 访问 JavaScript 对象字面量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9030940/

相关文章:

javascript - 在 Async/Await 下留下无用的同步代码是一种反模式吗?

javascript - 如何使用 JavaScript 根据用户输入的值检查数组值?

javascript - 选择子菜单时将类添加到父 li

javascript - 使用 HTML 和 JS 改进音量 slider

php - JavaScript 将值传递给 php 查询

javascript - ui 路由器中的 Angular Provider 访问

javascript - 如何使用 vue js 向 Flask 后端 api 发送请求?

javascript - ES6 对象速记符号可以与常规对象符号结合使用吗?

javascript - 如何使用 CSS 在 AngularJS 中换行文本?

javascript - 如何在 AngularJS 中使用 pickaday 指令禁用当前和 future 日期