2013-10-09 127 views
2

首先,我想這:有沒有更好的方法來處理默認的真?

var coolFunc = function(options) { 
    var minNum = options.minNum || true, 
    // rest of the function 
} 

但這決不導致錯誤作爲minNum VAR值。

所以,現在我這樣做:

var coolFunc = function(options) { 
    var minNum = options.minNum; 
    if (minNum === undefined) minNum = true; 
    // rest of the function 
} 

是否有這樣做的更標準的方式嗎?

+3

不,這是正確的方式。 –

+0

取決於可能的值,例如,如果它可以爲null,這將無法正常工作,而您希望'minNum = typeof options.minNum ==「undefined」? true:options.minNum' - 因爲速記只是在做虛假/真理檢查 – SmokeyPHP

+1

錯誤是正確的,這是正確的方法。但是,您可以稍微濃縮它:'var minNum = options.minNum === undefined? true:options.minNum;' –

回答

3

這是正確的方法。

常見的變體是

var coolFunc = function(options) { 
    var minNum = "minNum" in options ? options.minNum : true; 
    // rest of the function 
} 

我個人有時會使用一個效用函數:

function opt(options, key, defaultValue) { 
    if (options && key in options) return options[key]; 
    return defaultValue; 
}; 

讓自己的功能是這樣的:

var coolFunc = function(options) { 
    var minNum = opt(options, "minNum", true); 
    // rest of the function 
} 

小的優勢是,它還檢查options不是undefined

但它不是一個很大的收益,特別是當你不期望值不值時,所以大多數情況下我都不在乎。

+0

甜蜜,謝謝:) – sherlock

0

這種變異可能更直截了當比三元建議:

var minNum = (typeof options.minNum !== 'boolean') || options.minNum;

var minNum = (! "minNum" in options) || options.minNum;

相關問題