zoukankan      html  css  js  c++  java
  • JavaScript函数的默认参数(default parameter)

    JavaScript函数的默认参数(default parameter)

    js函数参数的默认值都是undefinedES5里,不支持直接在形参里写默认值。所以,要设置默认值,就要检测参数是否为undefined,按需求赋值。

    function multiply(a, b) {
      b = typeof b !== 'undefined' ?  b : 1;
    
      return a*b;
    }
    
    multiply(5); // 5
    multiply(5, 0); // 0
    

    上面是MDN的相关例子,是比较严谨的写法。不推荐下面的写法:

    function multiply(a, b) {
      b = b ?  b : 1;  // b = b || 1;
    
      return a*b;
    }
    
    multiply(5); // 5
    multiply(5, 0); // 5
    

    因为,在布尔类型环境中undefined, 0, "", NaN, null会被转换成 false

    进一步,还可以先利用arguments对象,再设置默认值 :

    function multiply(a) {
      var b = typeof arguments[1] !== 'undefined' ? arguments[1] : 1;
    
      return a*b;
    }
    
     multiply(5); // 5
     multiply(5, 0); // 0
    

    ES6里已经支持默认参数了,直接写就好啦:

    function multiply(a, b = 1) {
      return a*b;
    }
    
    multiply(5); // 5
    

    ES6还支持解构赋值来设置默认参数:

    jQuery.ajax = function (url, {
      async = true,
      beforeSend = function () {},
      cache = true,
      complete = function () {},
      crossDomain = false,
      global = true,
       // ... more config
    }) {
       // ... do stuff
    };
    

    更详细的介绍,请看阮一峰的ECMAScript 6 入门函数的拓展

    参考文档

  • 相关阅读:
    2021.3.3
    2021.3.2
    2021.3.1
    2021.2.28(每周总结)
    2021.2.27
    2021.2.26
    2021.2.25
    2021.2.23
    Redis系统学习之五大基本数据类型(List(列表))
    Redis系统学习之五大基本数据类型(String(字符串))
  • 原文地址:https://www.cnblogs.com/liushen/p/Default_Parameter_Of_JavaScript.html
Copyright © 2011-2022 走看看