gra*_*ant 11 javascript syntax firefox mozilla variable-assignment
在查看Mozilla(Firefox)附加SDK的一些Javascript代码时,我看到了一些我之前从未见过的变量声明:
var { foo, bar } = someFunction("whatever"); // just an example
Run Code Online (Sandbox Code Playgroud)
查看变量名称周围的花括号?事实证明,这是一种将对象的属性值一次性分配给多个变量的方法.它看起来类似于解构赋值或PHP list
,除了使用对象属性而不是数组.
我实际上通过一些小小的问题找到了这个,因为似乎没有关于它的文档.看看这段代码:
function gimmeAnObject() {
return {
foo: "hey",
bar: "sup"
};
}
console.log(gimmeAnObject()); // Object { foo="hey", bar="sup" }
var { foo, bar } = gimmeAnObject();
console.log(foo); // hey
console.log(bar); // sup
Run Code Online (Sandbox Code Playgroud)
我还发现这只适用于Firefox.Chrome会抛出错误:" Uncaught SyntaxError:Unexpected token { ".这就解释了为什么在我开始查看Firefox附加代码之前我没有看到它.
有没有其他人见过这种变量声明?为什么我找不到任何文件?因为它只适用于Firefox,我认为它可能是一个Mozilla的东西,但我甚至在MDN上找不到任何关于它的东西.然后,也许我只是不知道要搜索什么.
看看"Destructuring Assignment"链接(即http://en.wikipedia.org/wiki/JavaScript_syntax#Assignment和http://dailyjs.com/2011/09/12/destructuring/)看起来这个构造是解构赋值.
维基百科:
在Mozilla的JavaScript中,从版本1.7开始,解构赋值允许一次将数据结构的各个部分分配给多个变量.分配的左手侧是类似于一个任意嵌套对象/阵列字面含1-左值在其叶子将要接收所分配的值的子结构的图案.
在JavaScript中,数组和对象或多或少相同,因此对象也支持数组支持的构造并不奇怪.
归档时间: |
|
查看次数: |
1968 次 |
最近记录: |