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 相关文章推荐
js限制文本框为整数和货币的函数代码
Oct 13 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
Apr 07 Javascript
JavaScript全排列的六种算法 具体实现
Jun 29 Javascript
js获取URL的参数的方法(getQueryString)示例
Sep 29 Javascript
js实现简单登录功能的实例代码
Nov 09 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
Oct 16 Javascript
jQuery实现的简单分页示例
Jun 01 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
Dec 19 Javascript
用原生 JS 实现 innerHTML 功能实例详解
Apr 03 Javascript
详解vue-cli3 中跨域解决方案
Apr 10 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
May 27 Javascript
Element-UI中关于table表格的那些骚操作(小结)
Aug 15 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
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
Javascript连接Access数据库完整实例
2015/08/03 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
2016/09/21 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
webpack配置sass模块的加载的方法
2017/07/30 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
JavaScript错误处理操作实例详解
2019/01/04 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
Vue3为什么这么快
2020/09/23 Javascript
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
Python中的pack和unpack的使用
2018/03/12 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
Python 从列表中取值和取索引的方法
2018/12/25 Python
用python实现英文字母和相应序数转换的方法
2019/09/18 Python
python 伯努利分布详解
2020/02/25 Python
Python如何重新加载模块
2020/07/29 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
加拿大廉价机票预订网站:CheapOair.ca
2018/03/04 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
2016年感恩节寄语
2015/12/07 职场文书
企业团队精神心得体会
2016/01/19 职场文书
SQL Server——索引+基于单表的数据插入与简单查询【1】
2021/04/05 SQL Server