Javascript 有没有更好的方法来处理默认值?

Javascript 有没有更好的方法来处理默认值?,javascript,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) min

首先,我尝试了这个:

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
}
有更标准的方法吗?

这是正确的方法

一个常见的变体是

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
}
一个小优点是它还检查
选项
是否未定义


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

这个变体可能比三元建议更直截了当:

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


var minNum=(!“minNum”在选项中)| | options.minNum

不,这是正确的方法。取决于可能的值,例如,如果它可以为null,这将不起作用,而您希望
minNum=typeof options.minNum==“未定义”?正确:options.minNum
-因为速记只是在做falsy/truthy检查。系统是正确的,这是正确的方法。但是,您可以稍微压缩它:
var minNum=options.minNum==undefined?正确:options.minNumundefined
的变量设置为true,否则这是不可能的。@ComFreek。我猜那些疯狂的程序员也被解雇了。