有没有办法在js中将特定参数传递给函数(无顺序)?

时间:2018-08-31 06:59:27

标签: javascript function parameters parameter-passing optional-parameters

假设我具有以下功能:

function fun(a,b) {
    if(a) {  //condition can be different
        console.log(a);
        // some other code
    }
    if(b) {  //condition can be different
        console.log(b);
        // some other code, not necessary same as above
    }
}

现在我知道我可以像这样调用上面的函数了:

fun(1,2) // a=1, b=2
fun()    // a=b=undefined
fun(1)   // a=1, b=undefined

但是我想做这样的事情:

fun(2)   // a=undefined, b=2

我只想传递分配给b而不是a 的一个参数
c#中,可以这样操作:

fun(b: 2) // assign b=2

那么有没有办法在JavaScript中做到这一点?

我想到的一种方法是
而不是传递两个参数,而是传递一个包含参数的对象。
像这样:

function fun(obj) {
    if(obj.a) {
        console.log(obj.a);
        // some other code
    }
    if(obj.b) {
        console.log(obj.b);
        // some other code, not necessary same as above
    }
}

使用上述方法,我只能传递特定的参数。

但是有什么方法可以在功能中不包含任何修改

注意:-我不想将null或undefined传递为第一个参数,然后传递第二个参数。

3 个答案:

答案 0 :(得分:1)

您在这里可以做的是传递一个选项object作为function的参数,您可以在其中将ab指定为keys为您的options对象。

有几种JavaScript框架使用相似的方法,尤其是在构建模块时。

这应该是您的功能:

function fun(options) {
    if(options.a) {  //condition can be different
        console.log(options.a);
        // some other code
    }
    if(options.b) {  //condition can be different
        console.log(options.b);
        // some other code, not necessary same as above
    }
}

作为通话示例,您可以执行以下操作:

fun({b: 2})
fun({a:1, b: 3})
fun({a: "a string"})

答案 1 :(得分:0)

以下是在不专门分配undefined值的情况下获得结果的方法:

function fun(obj) {
  console.log('a=' + obj.a + ", " + "b=" + obj.b)
};

fun({b: 2});

答案 2 :(得分:0)

您可以为此使用closure。这样,您就不必修改原始的function

function fun(a,b) {
    if(a) {  //condition can be different
        console.log(a);
        // some other code
    }
    if(b) {  //condition can be different
        console.log(b);
        // some other code, not necessary same as above
    }
}

function func(a) {
  return function(b) {
    fun(a,b);
  }
}

func()(2);