javascript - 箭头函数 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 的一部分,并且这个函数在特定调用之前编写了一个钩子。
解决方案
如果您没有传递花括号,则箭头函数默认返回您指向的值。所以这样想
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 的函数,并且我可以为不同的值创建更多的乘数。
推荐阅读
- python - Python Selenium 没有点击
- c++ - OpenMP 线程与静态变量的关联
- java - 与“String.split”不匹配两个字符序列之间的正则表达式
- django - Django 抽象模型继承 - 使所有字段都可以为空
- php-7 - 特征函数的 PHPDoc 返回类型
- c# - XAML 数据绑定到另一个类
- java - Springboot JMS消费者代码在tomcat中部署为WAR时不运行
- python - 在 MatplotLib 中绘制日期和小时
- python - Flake8:如何将选项传递给旧版 api?
- c# - 将 localhost 端口设置为环境变量