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 相关文章推荐
OfflineSave离线保存代码再次发布使用说明
May 23 Javascript
javascript innerText和innerHtml应用
Jan 28 Javascript
jquery自定义滚动条插件示例分享
Feb 21 Javascript
jQuery中wrapAll()方法用法实例
Jan 16 Javascript
如何用javascript计算文本框还能输入多少个字符
Jul 29 Javascript
javascript每日必学之运算符
Feb 16 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
Jul 22 Javascript
React Native验证码倒计时工具类分享
Oct 24 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
Apr 11 Javascript
使用Vue实现调用接口加载页面初始数据
Oct 28 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
Feb 11 Javascript
vue-resourc发起异步请求的方法
Feb 11 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 curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
PHP自动重命名文件实现方法
2014/11/04 PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
2016/01/09 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
彻底搞懂PHP 变量结构体
2017/10/11 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
jQuery 性能优化指南 (1)
2009/05/21 Javascript
JavaScript效率调优经验
2009/06/04 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
JavaScript编程的10个实用小技巧
2014/04/18 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
EasyUI中datagrid在ie下reload失败解决方案
2015/03/09 Javascript
jQuery实现手机自定义弹出输入框
2016/06/13 Javascript
关于原生js中bind函数的简单实现
2016/08/10 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
原生js实现水平方向无缝滚动
2017/01/10 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
vue读取本地的excel文件并显示在网页上方法示例
2019/05/29 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
JavaScript获取某一天所在的星期
2019/09/05 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
ES6中的类(Class)示例详解
2020/12/09 Javascript
对python中数组的del,remove,pop区别详解
2018/11/07 Python
python 通过可变参数计算n个数的乘积方法
2019/06/13 Python
python使用gdal对shp读取,新建和更新的实例
2020/03/10 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
需要知道的CSS3动画技术
2010/01/01 HTML / CSS
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
Noon埃及:埃及在线购物
2019/11/26 全球购物
优秀党员获奖感言
2014/02/18 职场文书
五四青年节优秀演讲稿范文
2014/05/28 职场文书
2015暑假假期总结
2015/07/13 职场文书
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android