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 相关文章推荐
判断对象是否Window的实现代码
Jan 10 Javascript
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
Aug 09 Javascript
浅谈Unicode与JavaScript的发展史
Jan 19 Javascript
JavaScript操作XML文件之XML读取方法
Jun 09 Javascript
jquery图片轮播特效代码分享
Apr 20 Javascript
jQuery打字效果实现方法(附demo源码下载)
Dec 18 Javascript
AngularJS中的指令全面解析(必看)
May 20 Javascript
JavaScript实现的select点菜功能示例
Jan 16 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
Apr 27 Javascript
React从react-router路由上做登陆验证控制的方法
May 10 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
Feb 21 Javascript
vue draggable resizable gorkys与v-chart使用与总结
Sep 05 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
星际争霸任务指南——神族
2020/03/04 星际争霸
Laravel框架中扩展函数、扩展自定义类的方法
2014/09/04 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
php实现用户登陆简单实例
2017/04/04 PHP
jquery UI 1.72 之datepicker
2009/12/29 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
2013/11/12 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
Bootstrap一款超好用的前端框架
2017/09/25 Javascript
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
[46:47]完美世界DOTA2联赛PWL S2 FTD vs Magma 第二场 11.20
2020/11/23 DOTA
python共享引用(多个变量引用)示例代码
2013/12/04 Python
使用python 获取进程pid号的方法
2014/03/10 Python
Python字典操作简明总结
2015/04/13 Python
python使用append合并两个数组的方法
2015/04/28 Python
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
2018/04/27 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
Python中socket网络通信是干嘛的
2020/05/27 Python
python怎么提高计算速度
2020/06/11 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
人力资源经理的岗位职责
2014/03/02 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
法人授权委托书公证范本
2014/09/14 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
2015党建工作简报
2015/07/21 职场文书
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers