es6对象解构赋值

时间:2023-01-20 22:40:45 类型:JS/JQUERY
字号:    

一、数组的解构赋值:

      1.基本用法

let [a, b, c] = [1, 2, 3];
console.log(a, b, c); //1,2,3

let [d, ,] = [1, 2, 3];
console.log(d); //1

let [[e], f] = [[1], 2];
console.log(e, f); //1,2

let [g, ...h] = [1, 2, 3];
console.log(g, h); //1,[2,3]

2.不完全解构---右边提供的值要比变量多

let [[i]] = [[1, 2], 3];
console.log(i); //1

3.解构赋值失败为undefined

let [j] = [];
console.log(j); //undefined

4.支持解构赋值提供默认值

let [k = 1, l = 2] = [3];
console.log(k, l); //3,2

规则是先看右边的值是否严格等于undefined,如果是undefined才会用默认值,除此之外,都是优先用右边提供的值。

let [m = 1, n = 2] = [undefined, null];
console.log(m, n); //1,null

默认值支持是一个表达式,比如一个函数,赋值规则还是遵守先看右边是否为undefined。

function func1() {  return 2;
}
let [o = func1()] = [1];
console.log(o); //1

默认值支持使用别的变量,但前提是这个变量已经提前声明,否则会报错

let [p = 1, q = p] = [];
console.log(p, q); //1,1

二、对象的解构赋值

    1.基本用法

对象解构赋值与数组有些不同,数组像按照等号对称的赋值,而对象是按照key名相同赋值,与顺序无关

let { a, b } = { b: 1, a: 2 };
console.log(a, b); //2,1


<