7

最近、私は Firefox Add-on Builder SDK のソースを調べていて、そのような定数宣言に出くわしました:

const { getCodeForKey, toJSON } = require("../../keyboard/utils");

CommonJS Modulesに関する情報を見つけることができましたが、この割り当ての左側の部分は、言語固有でなければならず、それについて何もググることができなかったため、少し混乱しました。

ここで何が起こっているのかを説明する仕様/草案を教えてもらえますか?

4

1 に答える 1

12

これは、現在 Firefox で使用されている SpiderMonkey JavaScript エンジンによってのみ実装されている、破壊的な代入です。配列での動作は次のとおりです。

// Destructuring assignment
[a, b] = foo;

// Equivalent code
a = foo[0];
b = foo[1];

オブジェクトの操作方法は次のとおりです。

// Destructuring assignment
{a, b} = foo;

// Equivalent code
a = foo.a;
b = foo.b;

もう少し複雑な例:

// Destructuring assignment
{name: a, address: {line1: b}} = foo;

// Equivalent code
a = foo.name;
b = foo.address.line1;

したがって、コード例は次と同等です。

var utilsExports = require("../../keyboard/utils");
const getCodeForKey = utilsExports.getCodeForKey;
const toJSON = utilsExports.toJSON;

より便利な書き方にすぎません。

于 2012-04-18T06:06:58.110 に答える