這是一個destructuring assignment,目前只能通過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;
這只是一個更方便的寫法。
由於JavaScript 1.7(在基於壁虎的瀏覽器中)函數van返回多個值,左邊的部分基本上收集2個不同的值。或者,我認爲這是基於https://developer.mozilla.org/en/New_in_JavaScript_1.7的文檔。在那個頁面上,他們顯示的例子是[a,b] = fn();但我懷疑它與FF擴展中的相似。閱讀標題「解構賦值(合併到自己的頁面/部分)」 – GillesC 2012-04-17 21:30:57
另請參閱規範[JavaScript對象括號符號在左側分配](http://stackoverflow.com/q/26999820/1048572) – Bergi 2016-02-15 18:30:39