我找不到类似的问题,因为我找不到正确的问题/答案。
我想创建一个函数,如果在调用函数时没有传递参数,则将使用默认值,如果是,则将默认值替换为函数参数中传递的值。
例如:
function openBlock(false){
// if parameter was passed with 'false' value, it will do this
// else it will put automatically a 'true' value to an function's argument
}
因此,如果调用没有任何参数的函数
openBlock()
,则默认情况下它将认为它是参数true
。如果我使用像false
这样的参数openBlock(false)
调用函数,它将覆盖默认行为。谢谢
最佳答案
尽管没有内置的方法,但是有多种方法可以用Javascript来完成。最简单的模式是:
function(option) {
option = option || "default";
// do stuff
}
但是正如@FelixKling指出的那样,这不适用于您的情况,因为它将用默认值替换所有false-y值(包括将参数明确设置为
false
)。对于要默认为true
的布尔参数,您需要:function(option) {
// default to "true"
option = option !== undefined ? option : true;
// do stuff
}
当您处理多个参数时,最好的选择通常是使用单个
options
或config
参数并检查属性是否存在:function(options) {
var arg1 = option.arg1 !== undefined ? false : true;
var arg2 = option.arg2 || "default";
// do stuff
}
如果您使用的是jQuery或下划线之类的库,则
extend
方法可以很容易地设置具有默认值的对象,然后使用提供的值(如果存在)覆盖它们:function(options) {
var defaults = {
arg1: true,
arg2: "default"
};
options _.extend(defaults, options);
// do stuff
}