ES6中参数的默认值语法介绍


Posted in Javascript onMay 03, 2017

前言

在ES6如果函数参数没有值或未定义的,默认函数参数允许将初始值初始化为默认值。下面来看看详细的介绍吧。

语法

function [name]([param1[ = defaultValue1 ][, ..., paramN[ = defaultValueN ]]]) 
{
 statements
}

描述

在JavaScript中,函数默认参数定义。然而,在某些情况下,设置不同的默认值可能是有用的。这是默认参数可以帮助的地方。

在过去,设置默认值的一般策略是在函数体中测试参数值,如果它们是未定义的就分配一个值。如果在下面的例子中,在调用过程中b没有提供值,它的值将是undefined 当对 a*b 求值并且调用这个乘法的时候将返回NaN。

function multiply(a, b) {
var b = (typeof b !== 'undefined') ? b : 1;

return a*b;
}

multiply(5); // 5

在ES6中设置默认参数,对函数体的检查是不必须的了。现在,你可以简单的在函数头设置默认值:

function multiply(a, b = 1) {
 return a*b;
}

multiply(5); // 5

例子

通过未定义

在第二个函数调用中,即使第二个参数明确地被设置为undefined(虽然不是null),但是这个函数的颜色参数有一个默认值。

function setBackgroundColor(element, color = 'rosybrown') {
 element.style.backgroundColor = color;
}

setBackgroundColor(someDiv);   // color set to 'rosybrown'
setBackgroundColor(someDiv, undefined); // color set to 'rosybrown' too
setBackgroundColor(someDiv, 'blue'); // color set to 'blue'

调用时求值

默认参数在调用时计算的,所以不像在Python中,一个新的对象是每次调用函数创建。

function append(value, array = []) {
array.push(value);
return array;
}

append(1); //[1]
append(2); //[2], not [1, 2]

甚至适合于函数和变量

function callSomething(thing = something()) { return thing }

function something(){
 return "sth";
}

callSomething(); //sth

默认参数可以提供给以后的默认参数

已经遇到的参数可以提供给以后的默认参数:

function singularAutoPlural(singular, plural = singular+"s",
       rallyingCry = plural + " ATTACK!!!") {
 return [singular, plural, rallyingCry ];
}

//["Gecko","Geckos", "Geckos ATTACK!!!"]
singularAutoPlural("Gecko");

//["Fox","Foxes", "Foxes ATTACK!!!"]
singularAutoPlural("Fox","Foxes");

//["Deer", "Deer", "Deer ... change."]
singularAutoPlural("Deer", "Deer", "Deer peaceably and respectfully
 petition the government for positive change.")

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
Mar 10 Javascript
不用写JS也能使用EXTJS视频演示
Dec 29 Javascript
javascript中使用正则表达式清理table样式的代码
Apr 01 Javascript
JSON遍历方式实例总结
Dec 07 Javascript
第一章之初识Bootstrap
Apr 25 Javascript
原生js和jquery分别实现横向导航菜单效果
May 13 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
Jan 19 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
Apr 12 Javascript
jquery dataTable 获取某行数据
May 05 jQuery
spirngmvc js传递复杂json参数到controller的实例
Mar 29 Javascript
es6中reduce的基本使用方法
Sep 10 Javascript
React 高阶组件HOC用法归纳
Jun 13 Javascript
Express之get,pos请求参数的获取
May 02 #Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
May 02 #Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
May 02 #Javascript
JavaScript比较两个数组的内容是否相同(推荐)
May 02 #Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
May 02 #Javascript
xmlplus组件设计系列之树(Tree)(9)
May 02 #Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
May 02 #Javascript
You might like
浅析ThinkPHP中的pathinfo模式和URL重写
2014/01/06 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
jquery remove方法应用详解
2012/11/22 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
jquery模拟进度条实现方法
2015/08/03 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
微信小程序使用gitee进行版本管理
2018/09/20 Javascript
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
python在openstreetmap地图上绘制路线图的实现
2019/07/11 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
python自动识别文本编码格式代码
2019/12/26 Python
python爬虫构建代理ip池抓取数据库的示例代码
2020/09/22 Python
Django跨域请求原理及实现代码
2020/11/14 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
大学生求职简历的自我评价
2013/10/14 职场文书
人力资源部经理的岗位职责
2014/03/04 职场文书
教师网络培训感言
2014/03/09 职场文书
民政局个人整改措施
2014/09/24 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
工作自我评价范文
2015/03/05 职场文书
办公室行政主管岗位职责
2015/04/09 职场文书
敬老院活动感想
2015/08/07 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书