这是一个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