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 相关文章推荐
js弹出框轻量级插件jquery.boxy使用介绍
Jan 15 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
Jun 02 Javascript
JavaScript使用focus()设置焦点失败的解决方法
Sep 03 Javascript
JavaScript日期选择功能示例
Jan 16 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
Oct 26 Javascript
JavaScript模拟实现封装的三种方式及写法区别
Oct 27 Javascript
Bootstrap Table 搜索框和查询功能
Nov 30 Javascript
JavaScript中arguments和this对象用法分析
Aug 08 Javascript
Vue组件中的data必须是一个function的原因浅析
Sep 03 Javascript
对angularJs中$sce服务安全显示html文本的实例
Sep 30 Javascript
koa+jwt实现token验证与刷新功能
May 30 Javascript
详解JVM系列之内存模型
Jun 10 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自定义函数截取汉字长度
2014/05/15 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
PHP反射机制用法实例
2014/08/28 PHP
PHP安全上传图片的方法
2015/03/21 PHP
帝国cms目录结构分享
2015/07/06 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
yii2缓存Caching基本用法示例
2016/07/18 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
Nodejs读取文件时相对路径的正确写法(使用fs模块)
2017/04/27 NodeJs
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
python插入数据到列表的方法
2015/04/30 Python
python安装教程
2018/02/28 Python
python 输出所有大小写字母的方法
2019/01/02 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
python 使用递归实现打印一个数字的每一位示例
2020/02/27 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
2020/03/16 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
航海技术专业毕业生求职信
2014/04/06 职场文书
水电站项目建议书
2014/05/12 职场文书
表彰大会策划方案
2014/05/13 职场文书
授权委托书
2015/01/28 职场文书
教务处干事工作总结
2015/08/14 职场文书
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis
vue+echarts实现多条折线图
2022/03/21 Vue.js