es6基础学习之解构赋值


Posted in Javascript onDecember 10, 2018

前言

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变量赋值,然后调用,这么写的问题就是显得代码??拢?髅饕恍锌梢愿愣ǖ氖虑榉且?萌?写?耄?纯纯唇夤垢持凳窃趺锤傻模?/p>

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的解构赋值,如果有错误或不严谨的地方,欢迎批评指正,如果喜欢,欢迎点赞收藏

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
May 07 Javascript
表单元素与非表单元素刷新区别详细解析
Nov 06 Javascript
js密码强度检测
Jan 07 Javascript
基于JS模仿windows文件按名称排序效果
Jun 29 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
Jan 12 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
Oct 26 Javascript
vue组件间通信解析
Mar 01 Javascript
微信小程序switch开关选择器使用详解
Jan 31 Javascript
js中offset,client , scroll 三大元素知识点总结
Sep 11 Javascript
Layui数据表格 前后端json数据接收的方法
Sep 19 Javascript
webpack打包html里面img后src为“[object Module]”问题
Dec 22 Javascript
vue 导出文件,携带请求头token操作
Sep 10 Javascript
vue中将html字符串转换成html后遇到的问题小结
Dec 10 #Javascript
vue的.vue文件是怎么run起来的(vue-loader)
Dec 10 #Javascript
Bootstrap 实现表格样式、表单布局的实例代码
Dec 09 #Javascript
Bootstrap 按钮样式与使用代码详解
Dec 09 #Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
Dec 09 #Javascript
vue form check 表单验证的实现代码
Dec 09 #Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
Dec 09 #Javascript
You might like
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
最常用的8款PHP调试工具
2014/07/06 PHP
PHP中使用BigMap实例
2015/03/30 PHP
合格的PHP程序员必备技能
2015/11/13 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
jQuery 白痴级入门教程
2009/11/11 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
2013/01/25 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
elementUi vue el-radio 监听选中变化的实例代码
2019/06/28 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
python写的一个squid访问日志分析的小程序
2014/09/17 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
pandas分区间,算频率的实例
2019/07/04 Python
python实现计算器功能
2019/10/31 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
请介绍一下WSDL的文档结构
2013/03/17 面试题
实习护理工作自我评价
2013/09/25 职场文书
大专毕业生自我鉴定
2013/11/21 职场文书
给民警的表扬信
2014/01/08 职场文书
小学课外活动总结
2014/07/09 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
邀请函范文
2015/02/02 职场文书
2016继续教育培训学习心得体会
2016/01/19 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
react中的DOM操作实现
2021/06/30 Javascript