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 相关文章推荐
[原创]静态页面也可以实现预览 列表不同的显示方式
Oct 14 Javascript
MooBox 基于Mootools的对话框插件
Jan 20 Javascript
javascript学习笔记(八) js内置对象
Jun 19 Javascript
禁止ajax缓存获取程序最新数据的方法
Nov 19 Javascript
超实用的JavaScript表单代码段
Feb 26 Javascript
Vue.js 表单校验插件
Aug 14 Javascript
Javascript中引用类型传递的知识点小结
Mar 06 Javascript
Angular2学习教程之TemplateRef和ViewContainerRef详解
May 25 Javascript
Angular.js中$resource高大上的数据交互详解
Jul 30 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
Apr 23 jQuery
Angularjs实现页面模板清除的方法
Jul 20 Javascript
javascript实现固定侧边栏
Feb 09 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
ie6 动态缩略图不显示的原因
2009/06/21 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
php实现快速排序的三种方法分享
2014/03/12 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
vue 使用高德地图vue-amap组件过程解析
2019/09/07 Javascript
javascript实现简易的计算器
2020/01/17 Javascript
在Python中调用ggplot的三种方法
2015/04/08 Python
python网络编程之数据传输UDP实例分析
2015/05/20 Python
python生成不重复随机数和对list乱序的解决方法
2018/04/09 Python
在python里从协程返回一个值的示例
2019/02/19 Python
python 自动批量打开网页的示例
2019/02/21 Python
如何使用Python脚本实现文件拷贝
2019/11/20 Python
python 连续不等式语法糖实例
2020/04/15 Python
python 负数取模运算实例
2020/06/03 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
html5 sessionStorage会话存储_动力节点Java学院整理
2017/07/06 HTML / CSS
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
Fanatics法国官网:美国体育电商
2019/08/27 全球购物
若干个Java基础面试题
2015/05/19 面试题
应届毕业生求职信
2013/11/30 职场文书
师说教学反思
2014/02/07 职场文书
保护地球的标语
2014/06/17 职场文书
党员目标管理责任书
2014/07/25 职场文书
2014年底个人工作总结
2015/03/10 职场文书
2015年法制宣传月活动总结
2015/03/26 职场文书
电影地道战观后感
2015/06/04 职场文书
用Python selenium实现淘宝抢单机器人
2021/06/18 Python
python中24小时制转换为12小时制的方法
2021/06/18 Python