ES6回调功能

时间:2019-05-13 20:24:26

标签: javascript ecmascript-6 callback

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

    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);
});

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

2 个答案:

答案 0 :(得分:1)

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

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

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

示例中的函数默认将回调参数设置为空函数。这样,它可以盲目调用它,而无需先检查未定义的内容。

答案 1 :(得分:0)

在ES5中,它可能类似于:

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

这只是为回调设置默认值。