var a="1";
b={a:a},
b变体不是{“1”:1},为什么会发生这种情况?
也想知道我是否想得到我想要的结果,我该如何解决这个问题
答案 0 :(得分:7)
JavaScript有一个语法怪癖,其中对象文字中:
左侧的位不是表达式,就像右侧的位一样。
它可以是带引号的字符串文字,也可以是标识符标记。在标识符的情况下,令牌是逐字记录的,就像它是带引号的字符串一样。因此{a:"1"}
与{"a":"1"}
相同。
如果要将表达式用作属性名称,则必须使用[]
属性访问运算符执行此操作:
var b= {};
b[a]= a;
答案 1 :(得分:1)
因为b被分配给一个对象文字,该文字具有'a'属性,其值为a var中的任何值,即'i'。这就是javascript在定义对象文字时的工作方式
var x = { prop : value }
即使你在分配x之前定义了var prop,'prop'也是字面意思(双关语)对象文字中的一个键。
另外,我想你想要
var b = {a:a};
答案 2 :(得分:0)
javascript对象中的第一个a
是文字;它不会被视为变量并进行评估。