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 相关文章推荐
两个select之间option的互相添加操作(jquery实现)
Nov 12 Javascript
JavaScript 以对象为索引的关联数组
May 19 Javascript
jQuery实用技巧必备(下)
Nov 03 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
Dec 03 Javascript
javascript简单实现等比例缩小图片的方法
Jul 27 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
Nov 26 Javascript
jQuery设计思想
Mar 07 Javascript
详解Node.js开发中的express-session
May 19 Javascript
Node.js中多进程模块Cluster的介绍与使用
May 27 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
Jul 05 Javascript
原生JS写Ajax的请求函数功能
Dec 22 Javascript
Vue 中的受控与非受控组件的实现
Dec 17 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网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
jquery 指南/入门基础
2007/11/30 Javascript
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
以Python代码实例展示kNN算法的实际运用
2015/10/26 Javascript
实例讲解jQuery EasyUI tree中state属性慎用
2016/04/01 Javascript
AngularJS ng-controller 指令简单实例
2016/08/01 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
jQuery基于xml格式数据实现模糊查询及分页功能的方法
2016/12/25 Javascript
Vue2.0实现购物车功能
2017/06/05 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
layui table单元格事件修改值的方法
2019/09/24 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
python每次处理固定个数的字符的方法总结
2013/01/29 Python
在Python中使用__slots__方法的详细教程
2015/04/28 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
python实现飞机大战游戏
2020/10/26 Python
python五子棋游戏的设计与实现
2019/06/18 Python
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
法拉利英国精品店:Ferraris Boutique UK
2019/07/20 全球购物
泰国第一在线超市:Tops
2021/02/13 全球购物
人力资源行政经理自我评价
2013/10/23 职场文书
企业为何需要商业计划书
2013/12/26 职场文书
遗产继承公证书
2014/04/09 职场文书
我爱读书演讲稿
2014/05/07 职场文书
员工安全承诺书
2014/05/22 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
八一建军节主持词
2015/07/01 职场文书
解决sql server 数据库,sa用户被锁定的问题
2021/06/11 SQL Server
Pandas实现批量拆分与合并Excel的示例代码
2022/05/30 Python