解释var {A:a} = {A:1}

时间:2012-10-25 09:46:02

标签: javascript

我有以下几段代码(仅在Firefox中解析并正确运行)

var {A: a} = {A: 1};
console.log(a); // 1

现在我们有一个名为'a'的变量,其值为1

所以我有3个问题要问

  1. 为什么我们需要'var'?为什么我们不需要'='
  2. 的rhs上的var
  3. 'a'如何在范围内?
  4. 'a'如何分配给1?
    它似乎在这里使用成员明智的副本,但为什么?
    lhs上的对象不应该引用rhs上的对象吗?
  5. 例如,

    var b = {B: 1};
    var c = {B: 2};
    b = c;
    b.B = 3;
    console.log(c);
    

    在这个赋值(b = c)中,b现在引用c,它们共享同一个对象。为什么这个作业与原作不同?

    忘记提及我在Firefox 16.0上测试

1 个答案:

答案 0 :(得分:3)

您拥有的代码:

var {A: a} = {A: 1};

不是有效的JavaScript,只有在使用Firefox时它才有效,并且它不会传递任何已知的短信。)

正如ThiefMaster所提到的那样,在文档中查看后,这种用法称为解构分配。

您可以在此处阅读:Destructuring Assignment

摘自页面。

例如,您可以使用解构赋值来交换值:

var a = 1;
var b = 3;

[a, b] = [b, a];