解构赋值

解构赋值 【解构赋值】正常我们是这样定义一个数组,然后这样输出:

let arr = [1, 3, 5]; console.log(arr[0],arr[1],arr[2]); // 1 3 5

但利用解构赋值也可以这样写:
let [a, b, c] = [1, 3, 5]; console.log(a,b,c); // 1 3 5

前后解构如果不一致会输出这样的结果:
let [a, b, c] = [1, [3, 5]]; console.log(a,b,c); // 1 [ 3, 5 ] undefined

修改一下即可:
let [a, [b, c]] = [1, [3, 5]]; console.log(a,b,c); // 1 3 5

除了数组,还可以解构对象:
let person = { name: 'ethan', age: 24, job: 'java' }let {name, age, job} = person; console.log(name, age, job); // ethan 24 java

当我们获取到一个 json 数据,就可以使用这种方法来解构。也可以为其中的变量起别名:
let person = { name: 'ethan', age: 24, job: 'java' }let {name, age, job: profession} = person; console.log(name, age, profession);

为了防止没有数据的时候输出undefined,可以为变量设置默认值:
let [a='暂无数据', b='暂无数据', c='暂无数据'] = [1, , 5]; console.log(a,b,c); // 1 '暂无数据' 5let [a='暂无数据', b='暂无数据', c='暂无数据'] = [1, undefined, 5]; console.log(a,b,c); // 1 '暂无数据' 5

但如果传过来的是null,就不会转成默认值:
let [a='暂无数据', b='暂无数据', c='暂无数据'] = [1, null, 5]; console.log(a,b,c); // 1 null 5

还可以用来交换两个数,十分方便
let a = 5; let b = 10; [a, b] = [b, a]; console.log(a); // 10 console.log(b); // 5

还有工作中import时也会经常用到
import {xxx, xxx, xxx} from './xxx'

    推荐阅读