js函数的默许参数(default parameter)

js函数的默许参数(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 入门函数的拓展

    原文作者:acfasj
    原文地址: https://segmentfault.com/a/1190000009216763
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞