如果定义了函数,则调用一个函数,否则调用另一个函数

时间:2018-05-29 14:26:51

标签: javascript

我想调用callback函数(如果用户提供了一个函数),或默认为默认defaultCallback函数。

我按照以下方式完成了这项工作:

function defaultCallback(x) {
  console.log('default callback ' + x)
}

function test(callback) {
  let x = 'x'

  if (callback) {
    callback(x)
  } else {
    defaultCallback(x)
  }
}

我觉得应该有更简洁的方法来做到这一点?

3 个答案:

答案 0 :(得分:2)

你可以使用||运算符以获取回调或回退到defaultCallback。

function test(callback) {
   (callback || defaultCallback)('x')
}

以下是可用于在控制台中查看结果的测试代码段。



function defaultCallback(x) { console.log('Used default ' + x); }

function test(callback) {
  (callback || defaultCallback)('x')
}

test(undefined);
test((y) => console.log('Used func ' + y));




答案 1 :(得分:1)

我认为您正在寻找conditional operator

function test(callback) {
  let x = 'x'

  (typeof callback == "function" ? callback : defaultCallback)(x);
}

或者,如果您不想检查参数的类型,但只是断言它不是undefined,那么您可以使用default initialiser参数:

function test(callback = defaultCallback) {
  let x = 'x'

  callback(x);
}

答案 2 :(得分:-1)

怎么样:

function test(callback) {
  let x = 'x'

  callback ? callback(x) : defaultCallBack(x);
}
相关问题