es6的语法已经出了很长的时间了,在使用上也能够经过babel这类的编译工具转译为浏览器能够识别的es5的语法,可是依旧有不少开发在写代码的时候,依旧没有用es6的语法,而是习惯使用老的语法,这篇文章主要会介绍解构赋值基本用法以及在实际使用场景中相比es5语法的优点,让你们从根本上了解es6语法的优点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
上面的例子包含了数组解构时经常使用的基本用法浏览器
接下来再让咱们一块儿看看对象解构的基本用法:babel
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
通常咱们在定义函数的时候,若是函数有多个参数时,在es5语法中函数调用时参数必须一一对应,不然就会出现赋值错误的状况,来看一个例子:code
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的解构赋值,若是有错误或不严谨的地方,欢迎批评指正,若是喜欢,欢迎点赞收藏