【问题标题】: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 标准?

你怎么看?

【问题讨论】:

标签: javascript google-chrome standards opera


【解决方案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

        【讨论】:

          猜你喜欢
          • 2020-02-15
          • 2018-08-06
          • 2012-06-14
          • 2014-01-16
          • 2017-02-02
          • 2013-12-16
          • 1970-01-01
          相关资源
          最近更新 更多