有没有更好的方法来处理默认 true

Is there a better way to deal with default true?

本文关键字:处理 默认 true 方法 更好 有没有      更新时间:2023-09-26

首先我尝试了这个:

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
}

有没有更标准的方法?

这是

正确的方法。

一个常见的变体是

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

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

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

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

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