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 优化次数过多的循环 考虑到性能问题
Mar 05 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
Apr 02 Javascript
终于解决了IE8不支持数组的indexOf方法
Apr 03 Javascript
ie浏览器使用js导出网页到excel并打印
Mar 11 Javascript
jQuery实现带滚动线条导航效果的方法
Jan 30 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
Jul 28 Javascript
Vue.Draggable实现拖拽效果
Jul 29 Javascript
vue.js  父向子组件传参的实例代码
Oct 29 Javascript
jquery实现回车键触发事件(实例讲解)
Nov 21 jQuery
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
Jul 26 Javascript
微信小程序绘制图片发送朋友圈
Jul 25 Javascript
微信小程序中网络请求缓存的解决方法
Dec 29 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将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
怎么用javascript进行拖拽
2006/07/20 Javascript
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
JS DOM 操作实现代码
2010/08/01 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
js的.innerHTML = ""IE9下显示有错误的解决方法
2013/09/16 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
2014/01/09 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
vue基于mint-ui实现城市选择三级联动
2020/06/30 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
vue实现压缩图片预览并上传功能(promise封装)
2019/01/10 Javascript
每周一练 之 数据结构与算法(Stack)
2019/04/16 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
详解JavaScript中new操作符的解析和实现
2020/09/04 Javascript
python中的yield使用方法
2014/02/11 Python
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
Django基于Models定制Admin后台实现过程解析
2020/11/11 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
RetroStage德国:复古服装
2019/02/03 全球购物
MySQL面试题
2014/01/12 面试题
机电一体化专业应届本科生求职信
2013/09/27 职场文书
初婚未育证明
2014/01/15 职场文书
授权委托书
2015/01/28 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
刘胡兰观后感
2015/06/16 职场文书
Django实现翻页的示例代码
2021/05/24 Python
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js