Javascript 异步函数中的可选参数

Javascript 异步函数中的可选参数,javascript,node.js,Javascript,Node.js,如何在带有回调的异步函数中具有可选参数 例如,这是我的电话: func1(param1, param2, param3, param4, param5, param6, function(err, data) { . . . } 这里我想让param5和param6可选 module.exports.func1= function(param1, param2, param3, param4, param5, param6, callback) { .

如何在带有回调的异步函数中具有可选参数

例如,这是我的电话:

func1(param1, param2, param3, param4, param5, param6, function(err, data) {
  .
  .
  .
}
这里我想让param5和param6可选

        module.exports.func1= function(param1, param2, param3, param4, param5, param6, callback) {
      .
      .
      .
  }
我猜最简单的方法是看它们是否未定义,如果是,我们设置默认值;这是唯一的办法吗

谢谢

使用函数中的“arguments”属性来了解函数的长度(您有多少个参数)。最后一个是回调函数,其他的是param1、param2等

参考:

更新:我举了一个例子(可以改进逻辑)


基本上,您必须检查它们是否未定义。一种很好的处理方式是使用如下模式:

function func1(a, b, c, d, e, callback) {
    a = a || 'use';
    b = b || 'short';
    c = c || 'circuiting';
    d = d || 'for';
    e = e || 'defaults';
    callback = callback || function(){};
    ...
}
由于
undefined
的计算结果为“falsy”,因此它将在右侧获取结果,因此在指定合理的默认值时,会自动检查undefined

如果您想避免插入默认参数,那么可以使用
参数
对象

function func1(a, b, c, d, e, callback) {
    for (var i = 0, len = arguments.length; i < len; i++) {
        if (typeof arguments[i] === 'function') {
            callback = arguments[i];
            break;
        }
    }

    // Fill in defaults here
}
函数func1(a、b、c、d、e、回调){
for(var i=0,len=arguments.length;i
我知道我有点晚了,但最好使用单个对象作为参数:

function x(options){
    var a = options.a || "optional";
    var b = options.b || "optional";
    var c = options.c || "optional";
}

x({
    a: "foo",
    //b: "not set",
    c: "bar"
});
如果可以使用最新版本的JavaScript,则可以编写:

function x({a = "optional", b = "optional", c = "optional"}){
    //todo
}

x({
    a: "foo",
    //b: "not set",
    c: "bar"
});
如果其中一个参数未设置,则为“可选”

function x({a = "optional", b = "optional", c = "optional"}){
    //todo
}

x({
    a: "foo",
    //b: "not set",
    c: "bar"
});