一个后端开发者的前端学习笔记

解构赋值

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'
上一篇 下一篇

猜你喜欢

热点阅读