我对箭头函数有一个基本的理解。然而,我偶然发现了这段代码,并且是一些绊脚石。
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 =>看起来像是某种形式的双箭头函数?
我包括钩子代码,因为它是库羽毛and的一部分,这个函数是在特定调用之前编写一个钩子。
发布于 2019-08-16 20:43:05
如果没有传递大括号,则箭头函数默认返回指向它的值。所以这样想吧,
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,并且我可以为不同的值创建更多的乘法器。
发布于 2019-08-16 20:38:45
这类似于返回函数的函数。在旧的javascript中,这可能是这样的:
function test() {
return async function() {
//do something(probably await op)
}
}https://stackoverflow.com/questions/57530809
复制相似问题