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.minNum除非一个疯狂的程序员将一个名为undefined
的变量设置为true,否则这是不可能的。@ComFreek。我猜那些疯狂的程序员也被解雇了。