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 相关文章推荐
用javascript getComputedStyle获取和设置style的原理
Oct 10 Javascript
Prototype Date对象 学习
Jul 12 Javascript
Ajax执行顺序流程及回调问题分析
Dec 10 Javascript
javascript轻量级模板引擎juicer使用指南
Jun 22 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
Jan 30 Javascript
JavaScript操作HTML元素和样式的方法详解
Oct 21 Javascript
Bootstrap modal 多弹窗之叠加显示不出弹窗问题的解决方案
Feb 23 Javascript
Angular2实现组件交互的方法分析
Dec 19 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
Mar 03 Javascript
JavaScript设计模式之代理模式实例分析
Jan 16 Javascript
js实现滑动滑块验证登录
Jul 24 Javascript
Vue Element校验validate的实例
Sep 21 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
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
如何给phpcms v9增加类似于phpcms 2008中的关键词表
2013/07/01 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
php和asp语法上的区别总结
2019/05/12 PHP
Laravel框架集合用法实例浅析
2020/05/14 PHP
使用prototype.js 的时候应该特别注意的几个问题.
2007/04/12 Javascript
JS中for循序中延迟加载动态效果的具体实现
2013/08/18 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
jquery.cookie.js使用指南
2015/01/05 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
js 奇葩技巧之隐藏代码
2017/08/11 Javascript
详解在vue-cli中使用路由
2017/09/25 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
Visual Studio code 配置Python开发环境
2020/09/11 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
Bonprix法国:时尚、鞋子、家居
2020/12/29 全球购物
英语专业个人求职信范文
2014/02/01 职场文书
前厅部经理岗位职责范文
2014/02/04 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
全民创业工作总结
2015/08/13 职场文书
中秋节随笔
2015/08/15 职场文书
MySQL索引是啥?不懂就问
2021/07/21 MySQL