11

Mozilla(Firefox)アドオンSDKのJavascriptコードを見ていると、これまで見たことのないような変数宣言が見つかりました。

var { foo, bar } = someFunction("whatever");  // just an example

変数名を囲む中括弧が表示されますか?結局のところ、これはオブジェクトのプロパティの値を一度に複数の変数に割り当てる方法です。配列の代わりにオブジェクトプロパティを使用することを除けば、代入やPHPの破棄に似ているようです。list

ドキュメントがないように見えるので、私は実際にいくつかのいじりを通してこれを見つけました。このコードを見てください:

function gimmeAnObject() {
    return {
        foo: "hey",
        bar: "sup"
    };
}

console.log(gimmeAnObject()); // Object { foo="hey", bar="sup" }

var { foo, bar } = gimmeAnObject();

console.log(foo); // hey
console.log(bar); // sup

また、これはFirefoxでのみ機能することもわかりました。Chromeは代わりにエラーをスローします: " Uncaught SyntaxError:Unexpectedtoken{ "。それが、Firefoxアドオンコードを見始める前に私がそれを見なかった理由を説明しています。

他の誰かがこの種の変数宣言を見たことがありますか?ドキュメントが見つからないのはなぜですか?Firefoxでしか動作しないので、Mozillaのものかもしれないと思いますが、MDNでは何も見つかりませんでした。繰り返しになりますが、何を検索すればよいかわからなかったのかもしれません。

4

2 に答える 2

5

「DestructuringAssignment」リンク(つまり、 http://en.wikipedia.org/wiki/JavaScript_syntax#Assignmentおよびhttp://dailyjs.com/2011/09/12/destructuring/)を見ると、この構成破壊的な割り当てであるように見えます。 。

ウィキペディア:

MozillaのJavaScriptでは、バージョン1.7以降、割り当てを破棄すると、データ構造の一部を一度に複数の変数に割り当てることができます。割り当ての左側は、割り当てられた値の部分構造を受け取るリーフにl値を含む任意にネストされたオブジェクト/配列リテラルに似たパターンです。

JavaScriptでは、配列とオブジェクトはほぼ同じであるため、配列でサポートされている構成がオブジェクトでもサポートされていることはそれほど驚くことではありません。

于 2012-05-10T01:03:34.733 に答える
0

あなたはそれをすることはできません。varに名前を付けて、次のようにする必要があります。

var myObj = (function(){
    return {
        foo: 'foo',
        bar: 'bar'
    };
})();
于 2012-05-10T00:38:55.663 に答える