代码之家  ›  专栏  ›  技术社区  ›  napolux

在javascript中进行多次赋值?[A,B,C]=[1,2,3];是什么意思?

  •  20
  • napolux  · 技术社区  · 15 年前

    对于一个项目,开发人员向我们发送了一个.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 回复  |  直到 8 年前
        1
  •  17
  •   Sebastian Simon SamB    8 年前
        2
  •  5
  •   Marko Dumic    15 年前

    这是破坏性分配,可在javascript 1.7(Mozilla)和一些更新的浏览器中使用: http://www.robertnyman.com/javascript/javascript-1.7.html#destructuring-assignment

        3
  •  4
  •   Ivan Jeffrey Zhao    8 年前

    以下是有关主题的最新消息:截至 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"
    
        4
  •  2
  •   hallvors    15 年前

    Opera的旧的“futhark”javascript引擎对此提供了支持,但由于它是非标准的,在Web上不需要,并且会使新的和非常快速的实现复杂化,所以它被放到了新的引擎“carakan”中。