VIP用户交流群:462197261 收藏本站北冥有鱼 互联网前沿资源第一站 助力全行业互联网+
在线客服:78895949
tonglan
  • 当前位置:
  • 了解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?

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

    您可能感兴趣的文章:

    • js中对函数设置默认参数值的3种方法
    • Javascript中的默认参数详解
    • Javascript中设置默认参数值示例

    广而告之:
    热门推荐:
    超链接打开目标(target)的测试

    链接的target属性决定了链接在哪边打开,它的值通常为以下五种:_blank、_self、_parent、_top和自定义,依次表示为:新窗口、当前窗口、父窗口、顶层窗口和框架。当所指名称的框架不存在时,自定义作用等同于_blank。今天我们主要测试一下当所指名称的框架处于不同层次页面中···

    推荐10个HTML5响应式框架

    如今,HTML5已经被全世界的网站设计师和开发者所接受。HTML5被称为是web开发的未来可不是空穴来风。HTML5将语义化编程推到了新的高度。通过HTML5,开发者可以用更加简单易懂的单词来编写他们的网页应用。比如,HTML5推荐使用<strong>标签而不是<b>标签来加粗文本。···

    批量 kill mysql 中运行时间长的sql

     KILL语法 KILL [CONNECTION | QUERY] thread_id 每个与mysqld的连接都在一个独立的线程里运行,您可以使用SHOW PROCESSLIST语句查看哪些线程正在运行,并使用KILL thread_id语句终止一个线程。 KILL允许自选的CONNECTION或QUERY修改符: · KILL CONNECTION与不含修改符的···

    php debug 安装技巧

    本打算配置ZendDebugger 进行调试,配置了老长时间没配置成功,在phpinfo看不到ZendDebugger生效,经查发现是php5.3的问题,必须先卸载,本文介绍使用xdebug了。 软件安装太简单了,分别执行如下命令: sudo apt-get install apache2 sudo apt-get install php5 sudo ap···

    php中Snoopy类用法实例

    本文实例讲述了php中Snoopy类用法。分享给大家供大家参考。具体分析如下: 这里演示了php中如何通过Snoopy抓取网页信息 snoopy类的下载地址:http://sourceforge.net/projects/snoopy/ /* You need the snoopy.class.php from http://snoopy.sourceforge.net/ */ include("sn···

    织梦dedecms会员注册时实现邮箱验证通过

    看到有论坛反应会员注册邮箱验证不能使用,经过这几天的测试,会员注册验证没有多大问题,刚看到论坛有提供解决方案的,看了一下,只是争对UFT8的,现说下简单方法,注:并非修改DEDE程序。  QQ邮箱为了保障用户邮箱的安全,设置了POP3/SMTP的开关。  系统缺省···

    带有图片预览功能的上传表单的完整HTML

    带有图片预览功能的上传表单,完整的HTML代码如下所示 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>带有图片预览功能的上传表单jb51.net</title> <script> function···

    PHP静态延迟绑定和普通静态效率的对比

    PHP静态延迟绑定和普通静态效率的对比 只是一个简单的小实验,对比了下 延迟绑定 和 非延迟的效率 延迟绑定主要就是使用 static 关键字来替代原来的 self ,但功能非常强大了 实验代码: class A { protected static $cc1 = array('a1', 'b', 'c', 'd'); protected st···

    基于jquery.page.js实现分页效果

    基于jquery.page.js的一款简单的分页效果,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>简单的jQuery分页插件</title> <style> *{ margin:0; padding:0; list-style:none;} ···

    php实现下载限制速度示例分享

    复制代码 代码如下:// local file that should be send to the client$local_file = 'test-file.zip'; // filename that the user gets as default$download_file = 'your-download-name.zip'; // set the download rate limit (=> 20,5 kb/s)$download_rate = 20.5; ···