var [foo] = bar 的含义?

Meaning of var [foo] = bar?

我看到了如下代码片段。谁能告诉我是什么

var [input] = data; var [checkbox, payee, amount]  = data2;

是什么意思?

function example(data,data2){
var [input] = data;
var [checkbox, payee, amount]  = data2;
............
............
}

这是Destructuring assignment

The destructuring assignment syntax is a JavaScript expression that makes it possible to unpack values from arrays, or properties from objects, into distinct variables.

按照你的例子,

var data = [1];
var [input] = data;
console.log(input); //1

正如 Nina Scholz 在她的评论中所述,这是一个解构赋值。

如果 data2[1, 2, 3] 的数组,那么 var [checkbox, payee, amount] = data2; 等同于:

    var checkbox = data2[0]; // 1
    var payee = data2[1]; // 2
    var amount = data2[2]; // 3

其余参数

您可以像下面的示例一样使用带有 rest 参数的解构,将多个元素保存到一个数组中。

const digits = [1, 2, 3, 4, 5];
const [one, ...other] = digits;
console.log(one);
console.log(other);

省略值

您可以忽略不感兴趣的值,像这样

const myArray = ["car", "cat", "house", "dog", "window", "mouse"];
const [, cat, ,dog, , mouse] = myArray;
console.log(cat, dog, mouse);

或者像这样:

const myArray = ["John", "Mary", "Steve", 0, 1, 2];
const [name1, name2, name3] = myArray;
console.log(name1, name2, name3);

这只是 destructuring assignment

var t = [1,2];

var [a,b] = t;

console.log(a);
console.log(b);

当用于数组时,它将连续的数组元素分配给在赋值运算符左侧引入的变量。

这是一个 destructuring assignment with an array/iterable object (with implemented Symbol.iterator) 具有要分配的值。

该值进入与给定数据具有相同索引的变量。

要仅获取特定索引处的某些部分,您可以使用以索引作为键的对象。

var array = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten'];
    [zero, one] = array,
    { 3: three, 10: ten } = array;
    
console.log(zero);
console.log(one);
console.log(three);
console.log(ten);