你能解释为什么这个Object得到变量/值而不仅仅是它的值吗?
var a = 'foo', b = 'bar', obj = {a, b};
预期
obj = {'foo' : 'bar'}
结果
obj = {a: "foo", b: "bar"}
感谢
答案 0 :(得分:3)
在ES5 JavaScript中,您的代码会出现语法错误。
在ES2015 JavaScript中,
var obj = {a, b}
是
的简写var obj = { a: a, b: b }
如果你想{foo: "bar"}
,你可以(在ES2015中)使用
var obj = { [a]: b }
为了与旧环境兼容,您必须使用两个语句:
var obj = {};
obj[a] = b;
答案 1 :(得分:0)
原因是,您将它们添加为两个变量,成员而不是键值对。它是预期结果(ES6 / ES2015)或语法错误(ES5,因为应该有一个键:以逗号分隔的值对)。你在寻找的是:
obj = {};
abj[a] = b;
值得注意的是,给予:
obj = {a: b};
将a
作为新密钥,而不是替换为a
的值。
答案 2 :(得分:0)
尝试使用以下代码:
obj[a] = b;
这会给你:
obj = {" foo" :" bar" }
你原来的做法只是简写并将变量传递给对象,而不仅仅是它们的值