我找不到类似的问题,我想这是因为我找不到正确的问题/答案。 我想创建一个函数,如果在调用函数时没有传递参数,则使用默认值,如果是,则使用函数参数中传递的值替换默认值。 例如:
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)
,它将覆盖默认行为。
由于
答案 0 :(得分:2)
JavaScript并没有像其他语言那样实现默认参数。
你必须自己实施它们:
function openBlock(argument) {
argument = typeof argument !== 'undefined';
}
请查看Is there a better way to do optional function parameters in Javascript?以获得更通用的方法。
答案 1 :(得分:2)
有许多方法可以在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
}