如何通过两个数组索引创建JavaScript对象?为何直接赋值失败?
为什么用数组索引创建JavaScript对象会失败?
在ES5及更早的JavaScript版本中,对象字面量的属性名仅支持标识符或字符串字面量,无法直接使用表达式(比如arr[0]这类动态值)。你写的{arr[0]:arr[1]}里,arr[0]是一个表达式,不符合当时的语法规范,所以会抛出语法错误。
解决办法
1. ES5兼容写法
先创建空对象,再通过方括号语法动态赋值属性:
var arr = ["name","john"]; var obj = {}; obj[arr[0]] = arr[1];
方括号语法天生支持用表达式作为属性名,这是ES5就具备的特性。
2. ES6+ 计算属性名写法
ES6引入了计算属性名语法,允许在对象字面量中直接用表达式定义属性名,只需将表达式包裹在方括号内:
const arr = ["name","john"]; const obj = { [arr[0]]: arr[1] };
这样就能直接通过数组索引的值来定义对象的属性名,代码更简洁。
内容的提问来源于stack exchange,提问作者Aidenhsy
相关产品推荐
相关产品推荐

