3

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

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

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

所以我有3个问题要问

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

例如,

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

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

忘了说我在 Firefox 16.0 上测试

4

1 回答 1

3

您拥有的代码:

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

不是有效的 JavaScript,它仅在使用 Firefox 时有效,并且不会通过任何已知的 linter)。

正如 ThiefMaster 提到的,在文档中查找后,这种用法称为解构赋值。

你可以在这里阅读:解构赋值

取自页面。

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

var a = 1;
var b = 3;

[a, b] = [b, a];
于 2012-10-25T09:49:26.310 回答