javascript中的多重赋值? [a,b,c] = [1, 2, 3] 是啥意思?意思是?
Posted
技术标签:
【中文标题】javascript中的多重赋值? [a,b,c] = [1, 2, 3] 是啥意思?意思是?【英文标题】:Multiple assignment in javascript? What does [a,b,c] = [1, 2, 3]; mean?javascript中的多重赋值? [a,b,c] = [1, 2, 3] 是什么意思?意思是? 【发布时间】:2011-04-28 12:46:23 【问题描述】:对于一个项目,开发人员向我们发送了一个 .js 文件,其中的代码类似于:
var myList = [1,2,3];
var a,b,c;
[a,b,c] = myList;
它适用于 Opera 10.30、Firefox 3.6.x,但不适用于 Opera 10.60 和 Chrome。
只是好奇,您是否有任何参考或链接表明此代码符合 JS/ECMA 标准?
你怎么看?
【问题讨论】:
我很高兴地发现,自 Chrome 版本 49 (chromestatus.com/feature/4588790303686656) 以来,该功能已被引入桌面 Chrome。我已经在我的 Chrome 扩展代码 github.com/chuan6/webXi/commit/… 中验证了它。 如果有人来这里想知道,你可以做var [a,b,c] = myList;
具有相同的效果。
【参考方案1】:
以下是有关该主题的更新:截至javascript version 1.7,所有主要浏览器都支持解构赋值:请参阅browser compatibility。
解构赋值语法是一种 JavaScript 表达式,它可以将数组中的值或对象中的属性解包到不同的变量中。
——MDN’s documentation
所以你可以这样做:
let a, b;
[a, b] = ["Hello", "World"];
console.log(a); // "Hello"
console.log(b); // "World"
或者,如果您要定义变量,则只需一行:
let [a, b] = ["Hello", "World"];
console.log(a); // "Hello"
console.log(b); // "World"
【讨论】:
【参考方案2】:这是一个名为 destructuring assignment 的功能,它是在 JavaScript 1.7 和 ECMAScript 6 中添加的。它不是 ECMAScript 5 的一部分:What is cross browser support for JavaScript 1.7's new features? Specifically array comprehensions and the "let" statement
【讨论】:
【参考方案3】:Opera 的旧版“futhark”JavaScript 引擎对此提供了支持,但它在新引擎“carakan”中被删除了,因为它是非标准的,在网络上不需要,并且会使新的非常快速的实现变得复杂。
【讨论】:
【参考方案4】:这是解构赋值,在 Javascript 1.7 (mozilla) 和一些较新的浏览器中可用:http://www.robertnyman.com/javascript/javascript-1.7.html#destructuring-assignment
【讨论】:
以上是关于javascript中的多重赋值? [a,b,c] = [1, 2, 3] 是啥意思?意思是?的主要内容,如果未能解决你的问题,请参考以下文章