解构赋值
2018-08-21 本文已影响13人
Ethan_zyc
解构赋值
正常我们是这样定义一个数组,然后这样输出:
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 '暂无数据' 5
let [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'