javascript 字典的键不是存储为值,而是存储为变量名称

Key for javascript dictionary is not stored as value but as variable name

本文关键字:存储 变量名 字典 javascript      更新时间:2023-09-26

>我正在尝试创建一个这样的字典对象

var obj = { varName : varValue };

我所期望的是,如果varName='foo',obj 应该是{'foo', 'some value' }的,但我看到的是{varName, 'some value'}变量的值没有被使用,而是使用变量名称作为键。如何使可变值用作键?

尝试如下:

var obj = {};
obj[varName] = varValue;

你不能在旧的Javascript中使用"动态"键初始化对象。 var obj = { varName : varValue };相当于var obj = { "varName" : varValue };。这就是Javascript的解释方式。

但是,新的 ECMAScript 支持计算属性名称,您可以执行以下操作:

var obj = { [varName]: varValue };

从 ECMAScript 2015 开始,它在去年得到了更好的浏览器支持,你可以使用变量索引表示法:

const obj = { [varName] : varValue };

这在语法上与

var obj = {};
obj[varName] = varValue;

您还可以使用表达式或符号作为属性键:

const contact = {
    company: companyName,
};
const companiesWithContacts = {
    [contact.company.toLowerCase()]: true
};
const myList = {
    [Symbol.iterator]: createIteratorForList
};
function createIteratorForList() { ... }