JavaScript中变量名为何被当作对象键名?如何改用变量值为键?
问题解答
为什么参数a会被当成字面量键名?
在JavaScript的对象字面量里,写{a: b}这种形式时,冒号左边的a是作为字符串字面量来处理的,不会去读取变量a里存储的值。这是早期JS语法的规则——对象字面量的键名默认是固定的标识符,不会自动解析变量。
怎么修改让a的变量值作为键名?
有两种实用的写法:
方法1:ES6+ 计算属性名(推荐)
用方括号把变量包裹起来,JS就会解析变量的值作为键名:
function myfunc(a,b) { return { [a]: b }; } var c = myfunc("key","value"); console.log(c); // 输出 { key: "value" }
方法2:兼容ES5及更早版本的写法
先创建空对象,再通过方括号语法给对象添加属性:
function myfunc(a,b) { var obj = {}; obj[a] = b; return obj; } var c = myfunc("key","value"); console.log(c); // 输出 { key: "value" }
内容的提问来源于stack exchange,提问作者sosnus
相关产品推荐
相关产品推荐

