我找不到类似的问题,我想这是因为我找不到正确的问题/答案。 我想创建一个函数,如果调用函数时没有传递参数,则该函数将使用默认值,如果是这样,请将默认值替换为函数参数中传递的值。 例如:
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
的 bool 参数,您需要:
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 或 underscore 这样的库,extend
方法可以非常轻松地设置具有默认值的对象,然后使用提供的值(如果存在)覆盖它们:
function(options) {
var defaults = {
arg1: true,
arg2: "default"
};
options _.extend(defaults, options);
// do stuff
}
关于具有默认非必需值的 Javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9809112/