JS函数的默认参数

123.png


  js函数参数的默认值都是undefined,ES5不支持直接在形参里写默认值,所以,要设置默认值就需要首先检测传入的参数是否为undefined,然后在根据功能需要对参数进行赋值。

MDN对函数设置默认值给出了样例:

function multiply(a, b) {
 b = typeof b !== 'undefined' ?  b : 1;

 return a*b;
}

multiply(5); // 5
multiply(5, 0); // 0

这种方法是严谨的,最好不要使用下面的写法:

function multiply(a, b) {
 b = b ?  b : 1;  // b = b || 1;

 return a*b;
}

multiply(5); // 5
multiply(5, 0); // 5

以上方法在处理值为0的参数时,会默认把值转换成false,其他一些值,如:undefined '' NaN null也会出现这种情况。

另外,也可以使用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
};


对我有帮助
27人认为有帮助

相关帮助