【问题标题】:explain var {A: a} = {A: 1}解释 var {A: a} = {A: 1}
【发布时间】:2012-10-15 11:25:55
【问题描述】:

我有以下代码(只在 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 上测试

【问题讨论】:

标签: javascript


【解决方案1】:

您拥有的代码:

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

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

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

你可以在这里阅读:Destructuring Assignment

取自页面。

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

var a = 1;
var b = 3;

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

【讨论】:

  • 是的,你是对的。这虽然失败了所有的短绒。这不是有效的 JS。我现在正在 FF 上调查这个。
  • 它被称为解构赋值和一个mozilla特定的JS扩展。
猜你喜欢
  • 1970-01-01
  • 2012-11-23
  • 2019-11-17
  • 2014-07-24
  • 2017-01-30
  • 1970-01-01
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多