2013-04-12 42 views
2
function foo([a,b]) { 

    console.log(a); 
    console.log(b); 
} 

foo([12,34]); 

打印:解构与分配函数参数

12 
34 

另外这里:

var { a:x, b:y } = { a:7, b:8 }; 
console.log(x); // prints: 7 
console.log(y); // prints: 8 

是分配有效的这种方法吗?这种方法会带来什么问题吗?

而且使用相同的技术,我们可以交换两个变量:

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

我只是想知道在将来出现这种类型的分配的问题是什么?我在哪里可以找到与此类作业有关的最佳参考?

+0

第一个给我“意外的标记[”,第二个“意外的标记{”和第三个“分配中的无效的左侧”)。哪个浏览器(或其他JS实现)接受这些分配? – JJJ

+0

所有这些都是无效的代码。你怎么让他们工作? – Joseph

+0

既然你不会告诉如何或在哪里你能得到的工作和所有的例子显然是无效的JS,我将不得不投亲如不是一个真正的问题。 – JJJ

回答

0

这是一个Javascript 1.7的功能,它是Javascript的Mozilla实现的一部分。

https://developer.mozilla.org/en-US/docs/JavaScript/New_in_JavaScript/1.7#Destructuring_assignment_(Merge_into_own_page.2Fsection)

这不是任何ECMAScript标准的一部分(据我所知),我不认为有任何计划,使其在其他浏览器可用;你不应该在便携式网站中使用它。

+0

重复其实,它不是ECMAScript6 /和谐的一部分? http://wiki.ecmascript.org/doku.php?id=harmony:destructuring – iX3

+1

从2014年1月20日起,ES6规范的工作草案(22版):“2.13.5解构作业 补充语法 在某些情况下当处理生产AssignmentExpression:LeftHandSideExpression = AssignmentExpression时,以下语法用于改进LeftHandSideExpression的解释......“[(草稿)](http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts ) – iX3

+0

这个答案应该更新... –