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 相关文章推荐
检测jQuery.js是否已加载的判断代码
May 20 Javascript
根据表格中的某一列进行排序的javascript代码
Nov 29 Javascript
用JS在浏览器中创建下载文件
Mar 05 Javascript
JS控制表格实现一条光线流动分割行的方法
Mar 09 Javascript
星期几的不同脚本写法(推荐)
Jun 01 Javascript
js 弹出虚拟键盘修改密码的简单实例
Oct 10 Javascript
js实现键盘自动打字效果
Dec 23 Javascript
BootStrapValidator初使用教程详解
Feb 10 Javascript
使用jQuery卸载全部事件的思路详解
Apr 03 jQuery
利用Angular7开发一个Radio组件的全过程
Jul 11 Javascript
详细分析Node.js 模块系统
Jun 28 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
Sep 21 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 getsiteurl()函数
2009/09/05 PHP
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
php自动给文章加关键词链接的函数代码
2012/11/29 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
Yii2前后台分离及migrate使用(七)
2016/05/04 PHP
php微信开发之图片回复功能
2018/06/14 PHP
基于jQuery的history历史记录插件
2010/12/11 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
JS的数组迭代方法
2015/02/05 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
js实现右键菜单功能
2016/11/28 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
Node.js中文件操作模块File System的详细介绍
2017/01/05 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
2019/07/10 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
使用Keras画神经网络准确性图教程
2020/06/15 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
css3动画事件—webkitAnimationEnd与计时器time事件
2013/01/31 HTML / CSS
巴西宠物商店:Cobasi
2019/04/19 全球购物
一道Delphi上机题
2012/06/04 面试题
护士自我评价范文
2014/01/25 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
2016元旦晚会主持词
2015/07/01 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
7个关于Python的经典基础案例
2021/11/07 Python