ES6学习笔记-解构--方便的数据访问

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41012753/article/details/82899401

以下内容整理自 阮一峰 的《ECMAScript 6 入门》 第三章及一些其他网络资源

数组和对象是JS中最常用的表示形式。为了简化提取信息,ES6新增了解构,它能够按照一定的模式,从数组和对象中提取值,对变量进行赋值。

解构初体验

一个简单的栗子
在es5中,为变量赋值,需要一个一个的指定值。

let a = 1;
let b = 2;
let c = 3;

而用了es6的解构,就很简洁了

let [a,b,c]  = [1,2,3];

再举一个栗子
我们在开发中会经常拿对象的属性

const people = {
name:will
specialty:brilliant
}
const name = people.name
const specialty = people.brilliant

而es6我们可以从对象或者数据中取出数据存入变量里

const  people = {
name:'will',
specialty:'brilliant'
}
const {name,specialty} = people;

有没有很简单!
但是需要注意一点,对象赋值可以无序,但是变量名和属性必须是同名才能取到正确的值,否则你输出那个也是undefined,这个情况下就视为解构失败,你不信可以试试。

但是如果你非得写那么麻烦,非得自定义个变量名的话,可以写成这样的形式

let {name:newName} = {name:'will',age;18}\
newName;//will

但是何必和自己过不去呢

解构默认值

解构赋值允许存在默认值

let [foo = true] = [];
foo // true

let [x, y = 'b'] = ['a']; // x='a', y='b'
let [x, y = 'b'] = ['a', undefined]; // x='a', y='b'

他会判断那个位置有没有值,undefined是有的,所以这个时候默认值生效,如果这个位置设置为null,则会解构赋值失败。

但是这个默认值是惰性的,有需要的话他才出来,如果后面有具体的值,它连调用都不会调用。

function func(){
	console.log('i am called!');
}
let [a,b = func()] = [1,2];

这个func()连走都不会走的。

字符串的解构赋值

字符串也可以被解构,这是因为字符串被转换成了 类似数组的东西

const [a,b,c,d,e] = 'hello';
a;//h
b;//e
c;//l
d;//l
e;//o

数值和布尔值的解构赋值;

解构规则:只有等号右边的值不是对象就将其转为对象,由于undefinede和null无法转出对象,所以会报错;

用途

1、交换变量的值
2、从函数返回多个值
3、函数参数的定义
4、提取 JSON 数据
(5)函数参数的默认值
(6)遍历 Map 结构
7、输入模块的指定方法
es5

var jsonParse = require('body-parser').jsonParse

es6

const { jsonParse } = from 'body-parser'

猜你喜欢

转载自blog.csdn.net/weixin_41012753/article/details/82899401
今日推荐