You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript:如何将变量值作为对象属性名?解决语法报错

解决动态对象属性名的问题

这个场景我太熟悉了!你想要把变量key的值作为对象的属性名,而不是把key本身作为属性名,对吧?之前的写法报错是因为早期JavaScript的对象字面量语法不支持直接用表达式作为属性名,现在有两种简单的解决办法:

方法一:ES6之前的兼容写法(适合旧环境)

先创建一个空对象,再通过方括号语法动态赋值,这种方式所有浏览器都支持:

var key = 'first_name';
var value = 'Ali';
var key_value = {};
// 用方括号包裹变量key,就能把它的值作为属性名
key_value[key] = value;
// 最终key_value就是 {first_name: 'Ali'}

方法二:ES6+的计算属性名写法(更简洁)

如果你的项目环境支持ES6及以上,直接在对象字面量里用方括号包裹变量,就能直接把变量的值作为属性名:

const key = 'first_name';
const value = 'Ali';
// 方括号里的key会被解析成它的实际值
const key_value = { [key]: value };
// 结果同样是 {first_name: 'Ali'}

为什么之前的写法会报错?

  • 你一开始写的{key: value},这里的key是字符串字面量,不是变量,所以最终对象的属性名是"key",而不是变量key的值first_name。
  • 后来尝试的{window['key']: value}报错,是因为在ES6之前,对象字面量的属性名位置只能写标识符或者字符串字面量,不能写表达式,ES6的计算属性名才允许用方括号包裹表达式来定义属性名。

内容的提问来源于stack exchange,提问作者kodfire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:21:55