我找不到类似的问题,因为我找不到正确的问题/答案。
我想创建一个函数,如果在调用函数时没有传递参数,则将使用默认值,如果是,则将默认值替换为函数参数中传递的值。
例如:

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
}


当您处理多个参数时,最好的选择通常是使用单个optionsconfig参数并检查属性是否存在:

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
}

10-05 21:15
查看更多