了解JavaScript函数中的默认参数

 更新时间:2019年05月30日 15:46:50   作者:小峰  
JavaScript函数可以有默认参数值。通过默认函数参数,你可以初始化带有默认值的正式参数。下面我们来一起学习一下吧

前言

JavaScript函数可以有默认参数值。通过默认函数参数,你可以初始化带有默认值的正式参数。如果不初始化具有某些值的参数,则该参数的默认值为undefined。

请看下列代码:

function foo(num1){
console.log(num1);
}
foo();

在调用函数foo时,你没有传递任何参数,因此变量num1的默认值设置为undefined。但是,有时你可能需要设置默认值而非undefined。过去,最好的策略是测试参数值undefined,然后分配一个值。所以,在上面的例子中,如果你想要将num1的默认值设置为9,那么你可以按照以下代码所示的方式做:

function foo(num1) {
if (num1 === undefined) {
num1 = 9;
}
console.log(num1);
}
foo();

ECMAScript 6引入了函数的默认参数。使用ECMA 2015的默认参数功能,你将不再需要检查未定义的参数值。现在,你可以将9设置为参数本身的默认值。你可以重写上述函数以使用默认值,如下所示:

function foo(num1 =9) {
console.log(num1);
}
foo();

对于函数foo,如果num1参数的值未被传递,那么JavaScript将设置9作为num1的默认值。

检查未定义的参数

即使你在调用函数时明确地传递undefined作为参数值,参数值也将设置为默认值。

function foo(num1 =9) {
console.log(num1);
}
foo(undefined);

在上面的代码中,你传递undefined为num1的值;因此,num1的值将被设置为默认值9。

运行时计算默认值

JavaScript函数默认值在运行时计算。为了更好地理解这一点,请看以下代码:

function foo(value = koo()) {
return value;
}
function koo() {
return "Ignite UI";
}
var a = foo();
console.log(a);

在函数foo中,参数值的默认值设置为函数koo。在运行时调用函数foo时,将计算函数koo。调用foo函数后,你会得到如下图所示的输出(在这个例子中,我们使用了Ignite UI框架)。

重用默认参数

默认参数可供之后的默认参数使用。请看下列代码:

function foo(num1 = 9, num2 = num1 + 8){
console.log(num2);
}
foo();

在上面的代码中,使用num1的默认值来计算num2的默认值。调用函数foo时将得到以下输出:

结论

JavaScript默认参数在编写函数时非常有用。在调用函数时,如果缺少参数,则默认参数功能允许你为函数参数分配默认值,而不是将其定义为undefined。

英文原文:Easy JavaScript Part 3: What Is a Default Parameter in a Function?

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 解析URI与URL之间的区别与联系

    解析URI与URL之间的区别与联系

    URI就是一种资源定位机制,它是比较笼统地定位了资源,并不局限于客户端和服务器,而URL就定位了网上的一切资源,只要是网上的资源,都有唯一的URL
    2013-11-11
  • javaScript arguments 对象使用介绍

    javaScript arguments 对象使用介绍

    函数体内可以通过 arguments 对象来接收传递进来的参数,下面有个不错的示例,大家可以感受下
    2013-10-10
  • 如何用JavaScript定义一个类

    如何用JavaScript定义一个类

    其实Javascript中没有类这个定义,但是有类这个概念。很多人都写过这样的代码,就是一个关键字 function,然后定义一个方法名,方法名后紧跟一对括号。如果你在项目中写过这样的代码,那么祝贺你,你可以不费任何吹毛之力,就能一口气读完这篇文章了。
    2014-09-09
  • js中对象深拷贝方法总结

    js中对象深拷贝方法总结

    js深拷贝这个问题,在实际的工作和面试当中也是经常使用到的。
    还经常有一些公司要求,原生手写实现,这篇文章主要介绍了js中对象深拷贝方法总结,需要的朋友可以参考下
    2022-10-10
  • JavaScript中使用concat()方法拼接字符串的教程

    JavaScript中使用concat()方法拼接字符串的教程

    这篇文章主要介绍了JavaScript中使用concat()方法拼接字符串的教程,是JS入门学习中的基础知识,需要的朋友可以参考下
    2015-06-06
  • javascript学习笔记(十四) window对象使用介绍

    javascript学习笔记(十四) window对象使用介绍

    javascript学习笔记之window对象使用介绍,需要的朋友可以参考下
    2012-06-06
  • BAT及各大互联网公司2014前端笔试面试题--JavaScript篇

    BAT及各大互联网公司2014前端笔试面试题--JavaScript篇

    很多面试题是我自己面试BAT亲身经历碰到的。整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习js更是大有裨益
    2014-10-10
  • javascript中常用编程知识

    javascript中常用编程知识

    javascript虽然只是一个脚本语言,但是它完全也是一个编程语言需要我们来学习一下,下面是转载的篇关于javascript中常用的编程知识
    2013-04-04
  • Javascript数组循环遍历之forEach详解

    Javascript数组循环遍历之forEach详解

    本篇文章主要介绍了Javascript 数组循环遍历之forEach详解,对学习forEach有很好的帮助,有需要的可以了解一下。
    2016-11-11
  • JS两种定义方式的区别、内部原理

    JS两种定义方式的区别、内部原理

    方式1 是典型的函数声明(Function declarations)。方式2 是函数表达式(Function expressions),未必所有人都知道其区别,内部原理
    2013-11-11

最新评论