有一个开发者为一个项目给我们发送了一个 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中不行。
只是出于好奇:你是否有任何参考或链接表明这段代码是否符合ECMAScript标准?
有一个开发者为一个项目给我们发送了一个 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中不行。
只是出于好奇:你是否有任何参考或链接表明这段代码是否符合ECMAScript标准?
这是一个名为解构赋值的功能,它被添加到了 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"
Opera的旧版JavaScript引擎"futhark"支持此功能,但在新引擎"carakan"中被删除,因为它是非标准的,在网页上不需要,并且会使新的、非常快速的实现变得复杂。
var [a,b,c] = myList;
来达到同样的效果。 - arekolek