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+xml自动生成表格的东西
Dec 21 Javascript
jquery中常用的SET和GET
Jan 13 Javascript
JavaScript 函数式编程的原理
Oct 16 Javascript
function foo的原型与prototype属性解惑
Nov 19 Javascript
js 中{},[]中括号,大括号使用详解
May 12 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
Aug 26 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
Jan 27 Javascript
利用Javascript开发一个二维周视图日历
Dec 14 Javascript
微信小程序slider组件使用详解
Jan 31 Javascript
Vue的轮播图组件实现方法
Mar 03 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
Nov 14 jQuery
解决vue页面刷新,数据丢失的问题
Nov 24 Vue.js
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
一个目录遍历函数
2006/10/09 PHP
理解和运用PHP中的多态性[译]
2011/08/02 PHP
php中设置多级目录session的问题
2011/08/08 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
基于Laravel-admin 后台的自定义页面用法详解
2019/09/30 PHP
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
Javascript 实现复制(Copy)动作方法大全
2014/06/20 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
jQuery控制元素显示、隐藏、切换、滑动的方法总结
2015/04/16 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
JavaScript与JQUERY获取元素的宽、高和位置
2017/02/26 Javascript
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
Vue 项目中遇到的跨域问题及解决方法(后台php)
2018/03/28 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
基于Python log 的正确打开方式
2018/04/28 Python
如何用python整理附件
2018/05/13 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
python pycharm的安装及其使用
2019/10/11 Python
wxpython绘制圆角窗体
2019/11/18 Python
tensorflow 实现打印pb模型的所有节点
2020/01/23 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
Python 必须了解的5种高级特征
2020/09/10 Python
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
Seavenger官网:潜水服、浮潜、靴子和袜子
2020/03/05 全球购物
linux面试相关问题
2013/04/28 面试题
教师推荐信范文
2013/11/24 职场文书
村官个人总结范文
2015/03/03 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
在 Golang 中实现 Cache::remember 方法详解
2021/03/30 Python
Python中三种花式打印的示例详解
2022/03/19 Python
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL