首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >箭头函数ES6

箭头函数ES6
EN

Stack Overflow用户
提问于 2019-08-16 20:34:32
回答 2查看 92关注 0票数 0

我对箭头函数有一个基本的理解。然而,我偶然发现了这段代码,并且是一些绊脚石。

代码语言:javascript
复制
const errors = require('@feathersjs/errors');

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


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

这条线到底在干什么?

代码语言:javascript
复制
const test = () => async context =>

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

我包括钩子代码,因为它是库羽毛and的一部分,这个函数是在特定调用之前编写一个钩子

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-16 20:43:05

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

代码语言:javascript
复制
let testValue = () => 'some value';

是相同的

代码语言:javascript
复制
let testValue = () => {
   return 'some value';
};

因此,您的函数可以编写为

代码语言:javascript
复制
let test = () => {
   return async context => {
       // some process
   }
};

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

代码语言:javascript
复制
let multiplier = (x) => (y) => x * y;
let multiplyBy5 = multiplier(5);

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

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

票数 4
EN

Stack Overflow用户

发布于 2019-08-16 20:38:45

这类似于返回函数的函数。在旧的javascript中,这可能是这样的:

代码语言:javascript
复制
function test() {
   return async function() {
       //do something(probably await op)
   }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57530809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档