什么{花括号}周围的JavaScriptvariables名称的意思是

编辑看了JSHint之后,我发现这个“ 解构expression式”在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; 

这个例子看起来很愚蠢,因为只有一个项目被分配。 但是,您可以使用此模式一次分配多个variables:

 {x, y} = foo; 

相当于:

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

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

 var a = 1; var b = 3; [a, b] = [b, a]; 

浏览器支持可以使用kangax的ES6兼容性表进行跟踪。