基于条件语句调用具有多个参数的函数

时间:2015-07-11 19:39:52

标签: javascript function conditional-statements

标题说我有以下功能:

var foo = function(arg1, arg2,arg3) {
    // code
}

我想做类似的事情:

foo('bar', (x == true ? arg2, arg3 : arg2,arg3))

但我遇到了SyntaxError: Unexpected token ,这样做的正确语法是什么?

3 个答案:

答案 0 :(得分:3)

我会按照JCOC611说的那样具有可读性......

然而,“正确”的方式是使用.apply():

foo.apply(this, (x == true ? [arg1, arg2, arg3] : [arg1 ,arg2, arg3]))

答案 1 :(得分:2)

我认为保存一些角色不值得。拥有可读代码更有价值。只需要一个minifier / uglyfier,并执行此操作:

if(x === true){
   foo('bar', arg2, arg3);
}else{
   foo('bar', arg2, arg3);
}

答案 2 :(得分:-1)

var foo = function(arg1, arg2,arg3) {
    console.log(arguments)
}
var x = false;
var args = [];
args.push('bar');
x == true ? (function(){args.push('arg2'); args.push('arg3')})() : args.push('arg2');
console.log(args)
foo.apply(this,args)

有两种方法可以将variable no参数传递给函数。

  1. bind
  2. apply
  3. 根据需要使用其中任何一个。