代码之家  ›  专栏  ›  技术社区  ›  Juicy

一个行程序调用一个函数(如果定义了函数),否则调用另一个函数[重复]

  •  0
  • Juicy  · 技术社区  · 7 年前

    这个问题已经有了答案:

    我想打电话给 callback 函数,如果用户提供了一个函数,或者默认为默认值 defaultCallback 功能。

    我做的如下:

    function defaultCallback(x) {
      console.log('default callback ' + x)
    }
    
    function test(callback) {
      let x = 'x'
    
      if (callback) {
        callback(x)
      } else {
        defaultCallback(x)
      }
    }
    

    我觉得应该有一种更简洁的方式来做这个?

    3 回复  |  直到 7 年前
        1
  •  1
  •   Bergi    7 年前

    我想你在找 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
  •  2
  •   Daniel Gimenez    7 年前

    您只需使用运算符获取回调或回退到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));
        3
  •  0
  •   RicardoAgra    7 年前

    怎么样:

    function test(callback) {
      let x = 'x'
    
      callback ? callback(x) : defaultCallBack(x);
    }