JavaScript函數的默認參數(default parameter)
js函數參數的默認值都是undefined, ES5里,不支持直接在形參里寫默認值。所以,要設置默認值,就要檢測參數是否為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 入門的函數的拓展。
參考文檔
