箭头功能ES6

时间:2019-08-16 20:34:32

标签: javascript feathersjs

我对箭头functions有基本的了解。但是,我碰到了这段代码,却发现了一些东西。

The type or namespace name 'mshtml' could not be found

这条线到底在做什么?

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

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


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

看起来像某种形式的双箭头功能?

我包括了hooks代码,因为它是库feathersjs的一部分,并且此函数在特定调用之前编写了hook

2 个答案:

答案 0 :(得分:4)

如果不传递花括号,则默认情况下,箭头功能将返回您指向的值。所以这样想吧,

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

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

答案 1 :(得分:2)

这类似于返回函数的函数。在较旧的javascript中,它将类似于:

function test() {
   return async function() {
       //do something(probably await op)
   }
}