首页 > 解决方案 > 箭头函数 ES6

问题描述

我对箭头函数有一个基本的了解。然而,我遇到了这段代码,并且是一些偶然发现的东西。

const errors = require('@feathersjs/errors');

const test = () => async context => {
   //omited
}


module.exports = {
  before: {
    all: [],
    find: [],
    get: [],
    create: [test()],
    update: [],
    patch: [],
    remove: []
  },  
 };

这条线到底在做什么?

const test = () => async context =>

它看起来像某种形式的双箭头函数?

我包括了钩子代码,因为它是库 feathersjs 的一部分,并且这个函数在特定调用之前编写了一个钩子。

标签: javascriptfeathersjs

解决方案


如果您没有传递花括号,则箭头函数默认返回您指向的值。所以这样想

let testValue = () => 'some value';

是相同的

let testValue = () => {
   return 'some value';
};

所以你的函数可以写成

let test = () => {
   return async context => {
       // some process
   }
};

基本上,该函数返回另一个函数,这称为Currying,是一种创建高阶函数的方法,有助于避免重复传递某些值。例如,如果我有一个帮助函数可以帮助我创建一个乘数

let multiplier = (x) => (y) => x * y;
let multiplyBy5 = multiplier(5);

console.log(multiplyBy5(5)); // 25

我基本上创建了一个函数 multiplyBy5,它创建了一个将我的值乘以 5 的函数,并且我可以为不同的值创建更多的乘数。


推荐阅读