ES6中参数的默认值语法介绍

前言

在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.")

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • ES6字符串模板,剩余参数,默认参数功能与用法示例

    本文实例讲述了ES6字符串模板,剩余参数,默认参数功能与用法.分享给大家供大家参考,具体如下: 这里介绍一下字符串模板以及剩余参数,默认参数的概念以及使用. 先来说说字符串模板. 字符串模板 ES6中允许使用反引号 ` 来创建字符串,此种方法创建的字符串里面可以包含由美元符号加花括号包裹的变量${varible}.如果你使用过像C#等后端强类型语言的话,对此功能应该不会陌生. //产生一个随机数 var num=Math.random(); //将这个数字输出到console console.l

  • 深入浅出ES6新特性之函数默认参数和箭头函数

    1.函数参数的默认值 ES5中不能直接为函数的参数指定默认值,只能通过以下的变通方式: 从上面的代码可以看出存在一个问题,当传入的参数为0或者false时,会直接取到后面的值,而不是传入的这个参数值. 那怎么解决呢?对于上图的代码,可以通过判断是否传入了num参数,没有就用默认值: 这种做法还是很麻烦的,而ES6则直接在参数定义里面设置函数参数的默认值,而且不用担心传入参数是0或者false会出错了: 2.箭头函数 箭头函数用 => 符号来定义. 箭头函数相当于匿名函数,所以采用函数表达式的写法

  • ES6中参数的默认值语法介绍

    前言 在ES6如果函数参数没有值或未定义的,默认函数参数允许将初始值初始化为默认值.下面来看看详细的介绍吧. 语法 function [name]([param1[ = defaultValue1 ][, ..., paramN[ = defaultValueN ]]]) { statements } 描述 在JavaScript中,函数默认参数定义.然而,在某些情况下,设置不同的默认值可能是有用的.这是默认参数可以帮助的地方. 在过去,设置默认值的一般策略是在函数体中测试参数值,如果它们是未定

  • Python中自定义函方法与参数具有默认值的函数

    目录 一.Python中自定义函数的方法 1自定义函数的语法 2自定义函数的实现 3自定义函数的调用 二.Python中参数具有默认值的函数 1参数是常量默认值的函数 2参数是常量默认值的函数 一.Python中自定义函数的方法 在Python编程中,可以使用已经定义好的函数,也可以自定义函数实现某些特殊的功能. 1 自定义函数的语法 在Python中,自定义函数的语法如下所示: def 函数名(参数):     函数体 其中,def是关键字:之后跟的是函数名,通过函数名来调用该函数:函数名之后

  • ES6知识点整理之函数数组参数的默认值及其解构应用示例

    本文实例讲述了ES6知识点整理之函数数组参数的默认值及其解构应用.分享给大家供大家参考,具体如下: 在ES6中, 函数的参数也可以使用解构赋值和默认值的设置,下面我们来看下 在ES6之前设置函数默认值的写法 function test(x,y) { x = x || 12; y = y || 22; console.log(x,y); } test(); // 12 22 test(1,2) // 1 2 在ES6中给函数参数赋默认值 function test(x=12, y=22) { co

  • 在controller中如何设置接收参数的默认值

    目录 controller设置接收参数的默认值 @RequestParam代表的是请求参数注解 controller的传参问题 controller的映射 直接写类型,跟参数名 Request.getParameter方法 @RequestParam注解 @PathVariable注解 controller设置接收参数的默认值 public @ResponseBody Object queryActivityForPageByCondition( @RequestParam(value="kkk

  • ES6中非常实用的新特性介绍

    ECMAScript 6离我们越来越近了,作为它最重要的方言,Javascript也即将迎来语法上的重大变革,InfoQ特开设"深入浅出ES6"专栏,来看一下ES6将给我们带来哪些新内容. 写在前面 ES6 已经提交给 Ecma 大会审查了,也就是说,我们将迎来一大波 javascript 的最新标准,还有一些语法糖.ES6 中有很多值得我们关注的东西,下面是我发现的一些我们最常用的一些新特性,进行记录一下. 1. for-of循环 这个东西用来循环数组很爽,原因呢,是因为它弥补了目前

  • golang给函数参数设置默认值的几种方式小结(函数参数默认值

    目录 前言 强制改变 使用可变参数语法糖 利用结构体的config 转换函数的全部参数 补充知识:Golang中设置函数默认参数的优雅实现 总结 前言 这个问题相当麻烦,根据golang-nuts/google groups中的这篇文章,golang现在与将来都不会支持参数默认值.Go始终在使得自己变得尽可能的简单,而增加这种额外的支持会使parser变得更复杂. 设置参数值的好处: 可以缺省部分参数. 可以提供一种默认的,行之有效的配置. 但是参考资料中提到了几种实现默认值的方法: 强制改变

  • 深入讨论Python函数的参数的默认值所引发的问题的原因

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 陷阱重现 我们就用实际的举例来演示我们今天所要讨论的主要内容. 下面一段代码定义了一个名为 generate_new_list_with 的函数.该函数的本意是在每次调用时都新建一个包含有给定 element 值的list.而实际运行结果如下: Python 2.7.9 (default, Dec 19 2014, 06:05:48) [GCC 4.2.1 Compatible Apple LLV

  • C++超详细讲解函数参数的默认值

    目录 1.参数默认值的指定方式 2.参数默认值的指定规则 1.参数默认值的指定方式 在 C++ 中,可以在函数声明时为参数提供一个默认值.这样在函数调用时,如果没有提供函数参数值,则使用默认值. e.g. 在函数声明时,指定参数默认值 void Demo(int x = 0); int main(int argc, char* argv[]) { Demo(); // 不用提供参数,会将 x = 0 的结果输出 return 0; } void Demo(int x) { printf("x =

  • js函数参数设置默认值的一种变通实现方法

    php有个很方便的用法是在定义函数时可以直接给参数设默认值,如: 复制代码 代码如下: function simue ($a=1,$b=2){ return $a+$b; } echo simue(); //输出3 echo simue(10); //输出12 echo simue(10,20); //输出30 但js却不能这么定义,如果写function simue(a=1,b=2){}会提示缺少对象. js函数中有个储存参数的数组arguments ,所有函数获得的参数会被编译器挨个保存到这

  • MySQL5.7中的sql_mode默认值带来的坑及解决方法

    在正常项目开发过程中,如果MySQL版本从5.6升级到5.7版本.作为DBA在考虑数据库版本升级带来的影响时,一般会有几个注意点: sql_mode optimizer_switch 本文主要内容是MySQL升级到5.7版本之后,由于默认的 sql_mode 值带来的坑以及对应的解决方案. 案例一:ONLY_FULL_GROUP_BY 问题描述 MySQL版本从5.6升级至5.7之后,部分SQL执行报错,报错信息如下: ERROR 1055 (42000): Expression #3 of X

随机推荐