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 相关文章推荐
ajax 同步请求和异步请求的差异分析
Jul 04 Javascript
深入剖析JavaScript中的枚举功能
Mar 06 Javascript
js实现YouKu的漂亮搜索框效果
Aug 19 Javascript
如何实现JavaScript动态加载CSS和JS文件
Dec 28 Javascript
微信小程序 闭包写法详细介绍
Dec 14 Javascript
JS数组交集、并集、差集的示例代码
Aug 23 Javascript
Angular js 实现添加用户、修改密码、敏感字、下拉菜单的综合操作方法
Oct 24 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
Mar 17 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
Oct 24 jQuery
vue-router实现编程式导航的代码实例
Jan 19 Javascript
vue如何实现自定义底部菜单栏
Jul 01 Javascript
Node.js fs模块原理及常见用途
Oct 22 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
通过html表格发电子邮件
2006/10/09 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
2011/03/28 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
jquery查找tr td 示例模拟
2014/05/08 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
JS实现的自定义右键菜单实例二则
2015/09/01 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
js实现点赞效果
2020/03/16 Javascript
关于angular引入ng-zorro的问题浅析
2020/09/09 Javascript
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
2018/04/05 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
python 三元运算符使用解析
2019/09/16 Python
python字符串的拼接方法总结
2019/11/18 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
Solaris操作系统的线程机制
2012/12/23 面试题
电焊工岗位职责
2014/03/06 职场文书
党员个人总结自评
2015/02/14 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript