围绕javascript变量名称的{花括号}是什么意思

时间:2014-08-07 16:44:35

标签: javascript firefox firefox-addon

修改 在看了JSHint后,我发现了这个' 解构表达式'可以在ES6(使用esnext选项)或Mozilla JS扩展(使用moz)this中使用,但在阅读之后我仍然不明白为什么使用它

我在MDN

上遇到了以下代码
var ui = require("sdk/ui");
var { ActionButton } = require("sdk/ui/button/action");

第二行的大括号是什么以及为什么使用它们?为什么第一行没有括号?

1 个答案:

答案 0 :(得分:173)

这就是所谓的destructuring assignment,它是JavaScript 1.7(和ECMAScript 6)的新功能(目前仅在FireFox JavaScript中提供)引擎。)粗略地说,它会转化为:

var ActionButton = require("sdk/ui/button/action").ActionButton;

在这个例子中似乎很愚蠢,因为只有一个项目被分配。但是,您可以使用此模式一次分配多个变量:

{x, y} = foo;

相当于:

x = foo.x;
y = foo.y;

这也可以用于数组。例如,您可以轻松地交换两个值而不使用临时变量:

var a = 1;
var b = 3;

[a, b] = [b, a];

可以使用kangax' ES6 compatibility table跟踪浏览器支持。