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 发个判断字符串是否为符合标准的函数
Apr 27 Javascript
jQuery之折叠面板的深入解析
Jun 19 Javascript
javascript框架设计读书笔记之字符串的扩展和修复
Dec 02 Javascript
Jquery 实现table样式的设定
Jan 28 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
Mar 02 Javascript
详解基于webpack2.x的vue2.x的多页面站点
Aug 21 Javascript
Angular4实现鼠标悬停3d倾斜效果
Oct 25 Javascript
利用jqgrid实现上移下移单元格功能
Nov 07 Javascript
Vue项目中使用WebUploader实现文件上传的方法
Jul 21 Javascript
JavaScript对象原型链原理解析
Jan 22 Javascript
JSONP 的原理、理解 与 实例分析
May 16 Javascript
简单聊聊TypeScript只读修饰符
Apr 06 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实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
php for 循环使用的简单实例
2016/06/02 PHP
PHP时间戳格式全部汇总 (获取时间、时间戳)
2016/06/13 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
js中split和replace的用法实例
2015/02/28 Javascript
详解JavaScript的while循环的使用
2015/06/03 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
实例讲解React 组件
2020/07/07 Javascript
基于JavaScript实现简单扫雷游戏
2021/01/02 Javascript
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
python并发编程之线程实例解析
2017/12/27 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
python获取网络图片方法及整理过程详解
2019/12/20 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
2020/01/14 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
python压包的概念及实例详解
2021/02/17 Python
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
差生评语大全
2014/05/04 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
毕业生实习证明
2014/09/19 职场文书
2015年学校食堂工作总结
2015/04/22 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL