【问题标题】:ES6 Callback functionES6 回调函数
【发布时间】:2019-05-13 20:24:25
【问题描述】:

我正在查看其他人的代码并不断看到以这种风格编写的函数:

    getConsents: (_, callback = () => {}) => {
        const data = {};
        callback(data, true);
    }

我知道有些人使用下划线作为在不合适时跳过参数的约定,尽管我无法理解为什么回调函数参数以这种方式编写。

我尝试使用 babel 看看它在 es5 中是否更有意义,但运气不好:

getConsents: (function (_) {
  var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
  var data = {};
  callback(data, true);
});

如果有人可以解释这个约定,或者详细说明它在做什么,将不胜感激。

【问题讨论】:

  • 这是一个默认回调,如果函数调用时没有传递一个。见default parameters

标签: javascript ecmascript-6 callback


【解决方案1】:

从 ES6 开始,您可以为函数参数指定默认值。例如:

function greet(name = 'John Doe') {
  console.log('hello', name);
}

greet('Alan Alda');
greet();

您示例中的函数将回调参数默认为空函数。这样它就可以在不检查 undefined 的情况下盲目地调用它。

【讨论】:

    【解决方案2】:

    在 ES5 中它可能看起来像:

    getConsents: (function(_, callback = function() {}) {
        const data = {};
        callback(data, true);
    })
    

    它只是为回调设置一个默认值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      • 2016-11-07
      • 2016-04-07
      相关资源
      最近更新 更多