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 相关文章推荐
封装好的省市地区联动控件附下载
Aug 13 Javascript
JavaScript 对Cookie 操作的封装小结
Dec 31 Javascript
jquery dialog键盘事件代码
Aug 01 Javascript
js 页面关闭前的出现提示的实现代码
May 25 Javascript
使用jquery.qrcode生成彩色二维码实例
Aug 08 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
May 03 Javascript
微信小程序 参数传递实例代码
Mar 20 Javascript
jQuery.validate.js表单验证插件的使用代码详解
Oct 22 jQuery
解决echarts的多个折现数据出现坐标和值对不上的问题
Dec 28 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
May 05 Javascript
js getBoundingClientRect使用方法详解
Jul 17 Javascript
JS变量提升原理与用法实例浅析
May 22 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
php ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
php的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
深入解析PHP底层机制及相关原理
2020/12/11 PHP
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
修复IE9&safari 的sort方法
2011/10/21 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
值得分享的Bootstrap Ace模板实现菜单和Tab页效果
2015/12/30 Javascript
Nodejs如何复制文件
2016/03/09 NodeJs
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
关于Javascript中defer和async的区别总结
2016/09/20 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
webpack4.x打包过程详解
2018/07/18 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
JavaScript之数组扁平化详解
2019/06/03 Javascript
JS实现判断移动端PC端功能
2020/02/21 Javascript
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
Python字典数据对象拆分的简单实现方法
2017/12/05 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
python 监听salt job状态,并任务数据推送到redis中的方法
2019/01/14 Python
Python函数中不定长参数的写法
2019/02/13 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
物流专员岗位职责
2014/02/17 职场文书
低碳环保倡议书
2014/04/14 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
2014年领导班子专项整治整改方案
2014/09/28 职场文书
教师个人考察材料
2014/12/16 职场文书
神秘岛读书笔记
2015/07/01 职场文书