有没有更好的方法来处理默认的真实?

时间:2013-10-09 15:12:39

标签: javascript

首先我尝试了这个:

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

但是,这永远不会导致minNum var。

的值为false

所以现在我这样做:

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

有更标准的方法吗?

2 个答案:

答案 0 :(得分: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

但这并不是一个很大的收获,特别是当你不期望虚假的价值观时,所以大多数时候我都不在乎。

答案 1 :(得分:0)

这种变体可能比三元建议更直接:

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

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