es6之解构赋值

es6的语法已出了很长的时刻了,在运用上也能够经由历程babel这类的编译东西转译为浏览器能够辨认的es5的语法,然则照旧有许多开辟在写代码的时刻,照旧没有用es6的语法,而是习气运用老的语法,这篇文章重要会引见解构赋值基础用法以及在实际运用场景中比拟es5语法的上风,让人人从根本上相识es6语法的上风

基础用法

数组解构

让我们一同先来看数组解构的基础用法:

let [a, b, c] = [1, 2, 3] // a=1, b=2, c=3
let [d, [e], f] = [1, [2], 3] // 嵌套数组解构 d=1, e=2, f=3
let [g, ...h] = [1, 2, 3] // 数组拆分 g=1, h=[2, 3]
let [i,,j] = [1, 2, 3] // 不一连解构 i=1, j=3
let [k,l] = [1, 2, 3] // 不完全解构 k=1, l=2

上面的例子包含了数组解构时常常使用的基础用法

对象解构

接下来再让我们一同看看对象解构的基础用法:

let {a, b} = {a: 'aaaa', b: 'bbbb'} // a='aaaa' b='bbbb'
let obj = {d: 'aaaa', e: {f: 'bbbb'}}
let {d, e:{f}} = obj // 嵌套解构 d='aaaa' f='bbbb'
let g;
(g = {g: 'aaaa'}) // 以声明变量解构 g='aaaa'
let [h, i, j, k] = 'nice' // 字符串解构 h='n' i='i' j='c' k='e'

运用场景

变量赋值

我们先来看最基础的运用场景:变量赋值,先来看我们在一样平常平凡开辟中是怎样运用es5对变量赋值的:

var data = {userName: 'aaaa', password: 123456}
var userName = data.userName
var password = data.password
console.log(userName)
console.log(password)
var data1 = ['aaaa', 123456]
var userName1 = data1[0]
var password1 = data1[1]
console.log(userName1)
console.log(password1)

上面两个例子是最简朴的例子,用传统es5变量赋值,然后挪用,这么写的题目就是显得代码烦琐,显著一行能够搞定的事变非要用三行代码,来看看解构赋值是怎样干的:

const {userName, password} = {userName: 'aaaa', password: 123456}
console.log(userName)
console.log(password)
const [userName1, password1] = ['aaaa', 123456]
console.log(userName1)
console.log(password1)

相对于es5的语法是否是越发简朴明了,在数据量越大用解构赋值的上风越显著

函数参数的定义

平常我们在定义函数的时刻,假如函数有多个参数时,在es5语法中函数挪用时参数必需一一对应,不然就会涌现赋值毛病的状况,来看一个例子:

function personInfo(name, age, address, gender) {
  console.log(name, age, address, gender)
}
personInfo('william', 18, 'changsha', 'man')

上面这个例子在对用户信息的时刻须要通报四个参数,且须要一一对应,如许就会极易涌现参数递次传错的状况,从而致使bug,接下来来看es6解构赋值是怎样处理这个题目的:

function personInfo({name, age, address, gender}) {
  console.log(name, age, address, gender)
}
personInfo({gender: 'man', address: 'changsha', name: 'william', age: 18})

这么写我们只须要知道要传什么参数就行来,不须要知道参数的递次也没题目

交流变量的值

在es5中我们须要交流两个变量的值须要借助暂时变量的协助,来看一个例子:

var a=1, b=2, c
c = a
a = b
b = c
console.log(a, b)

来看es6怎样完成:

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

是否是比es5的写法越发轻易呢

函数的默许参数

在一样平常开辟中,常常会有这类状况:函数的参数须要默许值,假如没有默许值在运用的时刻就会报错,来看es5中是怎样做的:

function saveInfo(name, age, address, gender) {
  name = name || 'william'
  age = age || 18
  address = address || 'changsha'
  gender = gender || 'man'
  console.log(name, age, address, gender)
}
saveInfo()

在函数离 main先对参数做一个默许值赋值,然后再运用防止运用的历程当中报错,再来看es6中的运用的要领:

function saveInfo({name= 'william', age= 18, address= 'changsha', gender= 'man'} = {}) {
  console.log(name, age, address, gender)
}
saveInfo()

在函数定义的时刻就定义了默许参数,如许就免了背面给参数赋值默许值的历程,是否是看起来简朴多了

总结

这篇文章简朴引见了es6的解构赋值,假如有毛病或不严谨的处所,迎接批评指正,假如喜好,迎接点赞珍藏

    原文作者:william
    原文地址: https://segmentfault.com/a/1190000017312226
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞