3

私は次のコードを持っています(Firefoxでのみ正しく解析および実行されます)

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

これで、値が1の「a」という変数ができました。

だから私は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を参照し、同じオブジェクトを共有します。この割り当てが元の割り当てと異なるのはなぜですか?

Firefox16.0でテストしていることを忘れました

4

1 に答える 1

3

あなたが持っているコード:

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

有効な JavaScript ではありません。Firefox を使用している場合にのみ機能し、既知のリンターを渡しません)。

ThiefMaster が言及しているように、ドキュメントでこれを調べた後、この使用法は破壊割り当てと呼ばれます。

ここでそれについて読むことができます: Destructuring Assignment

ページから取得。

たとえば、値を交換するために分割代入を使用できます。

var a = 1;
var b = 3;

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