具有默认非必需值的 Javascript 函数

标签 javascript function if-statement arguments

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

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
}

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

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/

相关文章:

javascript - 将参数传递给并执行存储在数组中的全局函数

C 程序的函数似乎总是返回 true,但我不明白为什么

javascript - 我怎样才能默认对象?

c++ - 从函数隐式转换为函数指针?

javascript - 这个 JavaScript if/else 语句有什么问题?

c# 条件语句 |

javascript - Intellij Javascript 多行结构搜索和替换

javascript - 如何设置同级组件的状态以与上下文发生 react ?

javascript - 在 meteor 中设置一个带有助手的类

javascript - 限制添加到 JS 元素的字符