【发布时间】:2012-10-15 11:25:55
【问题描述】:
我有以下代码(只在 Firefox 中解析和正确运行)
var {A: a} = {A: 1};
console.log(a); // 1
现在我们有一个名为 'a' 的变量,其值为 1
所以我有 3 个问题要问
- 为什么我们在这里需要'var'?为什么我们在 '=' 的 rhs 上不需要 var
- “a”如何在范围内?
- 如何将“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 上测试
【问题讨论】:
-
var {A: a}语法无效,因此代码不会运行 -
你用什么 JS 运行时来产生这个结果?
-
SyntaxError: Unexpected token { -
虽然我认为这是无效的语法,但很奇怪,当我测试时它可以在 Firefox 上运行。
标签: javascript