ES6知识点整理之函数数组参数的默认值及其解构应用示例


Posted in Javascript onApril 17, 2019

本文实例讲述了ES6知识点整理之函数数组参数的默认值及其解构应用。分享给大家供大家参考,具体如下:

在ES6中, 函数的参数也可以使用解构赋值和默认值的设置,下面我们来看下

在ES6之前设置函数默认值的写法

function test(x,y) {
 x = x || 12;
 y = y || 22;
 console.log(x,y);
}
test(); // 12 22
test(1,2) // 1 2

在ES6中给函数参数赋默认值

function test(x=12, y=22) {
 console.log(x,y);
}
test(); // 12 22
test(3,4); // 3 4

ES6中函数数组参数的默认值

function test([x=2,y=1]) {
 console.log(x, y);
}
test([]); // 2, 1
test([3,4]) // 3 4
test(); // 报错: Uncaught TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined

解决上述最后一个错误:使用默认数组来匹配没有参数的情形

function test([x=2,y=1]=[]) {
 console.log(x, y);
}
test();  // 2 1

更多应用:

function test([x=2,y=1]=[], z=90) {
 console.log(x, y, z);
}
test();  // 2 1 90
test(undefined, 80); // 2 1 80
test('', 50); // 2 1 50 正常输出
// test(null, 80); // 报错,不能填入null Uncaught TypeError: Cannot read property 'Symbol(Symbol.iterator)' of object
// test(NaN, 60); // 报错: Uncaught TypeError: undefined is not a function

注意上面函数参数可以接受undefined,但不能接受null和NaN

下面则是更复杂的应用

function test([x=2,[y=3,w=4]=[]]=[], z=90) {
 console.log(x, y, w, z);
}
test(); // 2 3 4 90
test(undefined, undefined); // 2 3 4 90
test(undefined, 8); // 2 3 4 8
test([5,[]],12); // 5 3 4 12
test([5,[2,6]],12); // 5 2 6 12

注意其中的陷阱:

function test([x,y]=[1,2]) {
 console.log(x,y);
}
test(); // 1 2
test([]); // undefined undefined

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具http://tools.3water.com/code/HtmlJsRun测试上述代码运行结果。

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
DHTML 中的绝对定位
Nov 26 Javascript
JavaScript入门教程(6) Window窗口对象
Jan 31 Javascript
Google的跟踪代码 动态加载js代码方法应用
Nov 12 Javascript
javascript常用对话框小集
Sep 13 Javascript
详解jquery uploadify 上传文件
Nov 09 Javascript
js中一个函数获取另一个函数返回值问题探讨
Nov 21 Javascript
js写的评论分页(还不错)
Dec 23 Javascript
JSON简介以及用法汇总
Feb 21 Javascript
JS中数组重排序方法
Nov 11 Javascript
老生常谈ES6中的类
Jul 31 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
Sep 12 jQuery
JS实现音乐钢琴特效
Jan 06 Javascript
mpvue性能优化实战技巧(小结)
Apr 17 #Javascript
node.js监听文件变化的实现方法
Apr 17 #Javascript
vue中格式化时间过滤器代码实例
Apr 17 #Javascript
postman自定义函数实现 时间函数的思路详解
Apr 17 #Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
Apr 17 #Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
Apr 17 #Javascript
详解js获取video任意时间的画面截图
Apr 17 #Javascript
You might like
PHP简洁函数小结
2011/08/12 PHP
基于python发送邮件的乱码问题的解决办法
2013/04/25 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
jquery实现居中弹出层代码
2010/08/25 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
使用javascript为网页增加夜间模式
2014/01/26 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
JavaScript函数的调用以及参数传递
2015/10/21 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
在vue中获取dom元素内容的方法
2017/07/10 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
node.js命令行教程图文详解
2019/05/27 Javascript
JavaScript变量基本使用方法实例分析
2019/11/15 Javascript
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
python tornado微信开发入门代码
2018/08/24 Python
python根据多个文件名批量查找文件
2019/08/13 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
什么造成了Java里面的异常
2016/04/24 面试题
服务承诺书怎么写
2014/05/24 职场文书
提拔干部考察材料
2014/05/26 职场文书
本科毕业生应聘自荐信范文
2014/06/26 职场文书
手术室护士个人总结
2015/02/13 职场文书
结婚保证书(卖身契)
2015/02/26 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
2015年教师党员个人总结
2015/11/24 职场文书