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] 是啥意思?意思是?的主要内容,如果未能解决你的问题,请参考以下文章

5多重赋值和匿名变量

javascript用html给变量赋值

多重赋值语义

原子布尔变量的一条语句中的多重赋值

Scala 错误或功能?大写字母变量的多重赋值错误

Python 多重赋值和引用