编辑 在查看 JSHint 之后,我发现这个“ 解构表达式”在 ES6(使用 esnext 选项)或 Mozilla JS 扩展(使用 moz)中可用, 但是在 阅读后我仍然不明白为什么使用它
我在MDN上遇到过以下代码
var ui = require("sdk/ui"); var { ActionButton } = require("sdk/ui/button/action");
第二行的大括号有什么作用,为什么要使用它们?为什么第一行没有大括号?
这就是所谓的解构赋值,它是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 兼容性表来跟踪浏览器支持。