javascript - 具有 1 个元素的数组将被计算为括号中的该元素

标签 javascript arrays

const items = ['one'];
const obj = {
  'one': 'foobar'
};
console.log(obj[items]);

控制台输出是“foobar”。

为什么/如何[items]评估为“一”?这会在严格模式下引发错误吗?

最佳答案

您不能拥有数组类型的键。所以你的数组首先转换为字符串,代码相当于

const items = ['one'];
const obj = {
  'one': 'foobar'
};
console.log(obj[items.toString()]);

有趣的是,如果您尝试将 Symbol 添加到项目数组中,它将不起作用。

此外,由于 Array.toString 的工作方式,您可以拥有包含多个元素的 items,并且仍然获得相同的行为:

const items = [1,2];

const obj = {
   '1,2': 'foobar'
}

console.log(obj[items]); // also works

关于javascript - 具有 1 个元素的数组将被计算为括号中的该元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46333059/

相关文章:

javascript - 在保留换行符(使用 JavaScript)的同时将 HTML 转换为纯文本的最方便的方法是什么?

javascript - 单击按钮更改背景颜色

javascript - 如何在 Protractor/AngularJS 测试中重用代码

javascript - 这个混淆的 javascript 代码是如何工作的?

java - 比较两个 int 数组并打印缺失的数字

JavaScript 将数组转换为 JSON 格式

c++ - 浅拷贝或深拷贝或数组

python - 如何为递归神经网络创建滞后数据点?

c# - 在超出边界的某个步骤继续遍历数组

javascript - 正文输入框宽度点击删除功能