javascript问题:var a =“1”; b = {a:a},b变体不是{“1”:1}

时间:2010-11-05 17:01:38

标签: javascript

 var a="1";
 b={a:a},

b变体不是{“1”:1},为什么会发生这种情况?

也想知道我是否想得到我想要的结果,我该如何解决这个问题

3 个答案:

答案 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是文字;它不会被视为变量并进行评估。