javascript 中的多重赋值?[a,b,c] = [1, 2, 3] 是什么意思?意思是?

IT技术 javascript google-chrome standards opera
2021-01-10 12:39:25

对于一个项目,开发人员向我们发送了一个 .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 标准?

你怎么认为?

4个回答

这是一个称为解构赋值的特性,它是在 JavaScript 1.7 和 ECMAScript 6 中添加的。它不是 ECMAScript 5 的一部分:什么是 JavaScript 1.7 新特性的跨浏览器支持?特别是数组推导式和“let”语句

这是有关该主题的更新:从JavaScript 版本 1.7 开始,所有主要浏览器都支持解构赋值:请参阅浏览器兼容性

解构赋值语法是一种 JavaScript 表达式,可以将数组中的值或对象中的属性解包为不同的变量。

MDN 的文档

所以你可以这样做:

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"

这是解构赋值,在 Javascript 1.7 (mozilla) 和一些较新的浏览器中可用:http : //www.robertnyman.com/javascript/javascript-1.7.html#destructuring-assignment

Opera 较旧的“futhark”JavaScript 引擎对此有支持,但它被丢弃在新引擎“carakan”中,因为它是非标准的,在网络上不需要,并且会使新的和非常快速的实现复杂化。