2

首先我尝试了这个:

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

但这永远不会导致 false 作为 minNum var 的值。

所以现在我正在这样做:

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

有没有更标准的方法来做到这一点?

4

2 回答 2

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
}

一个小优点是它还检查 that optionsis not undefined

但这并不是一个很大的收获,尤其是当您不期望虚假值时,所以通常我不在乎。

于 2013-10-09T15:15:11.277 回答
0

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

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

或者

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

于 2013-10-09T16:45:45.507 回答