小编典典

javascript变量名周围的{花括号}是什么意思[重复]

all

编辑 在查看 JSHint 之后,我发现这个“ 解构表达式”在 ES6(使用 esnext 选项)或 Mozilla JS 扩展(使用
moz)中可用,
但是 阅读后我仍然不明白为什么使用它

我在MDN上遇到过以下代码

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

第二行的大括号有什么作用,为什么要使用它们?为什么第一行没有大括号?


阅读 103

收藏
2022-06-01

共1个答案

小编典典

这就是所谓的解构赋值,它是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 兼容性表来跟踪浏览器支持。

2022-06-01