箭头函数 ES6
Arrow function ES6
我对箭头有了基本的了解functions。然而,我遇到了这段代码并且有些迷茫。
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 的一部分,并且此函数正在特定调用之前编写 hook。
这类似于函数返回一个函数。在旧 javascript 中,这将是这样的:
function test() {
return async function() {
//do something(probably await op)
}
}
如果您没有传递大括号,则默认情况下箭头函数 returns 您指向的值。所以这样想,
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 的函数,我可以为不同的值创建更多乘数。
我对箭头有了基本的了解functions。然而,我遇到了这段代码并且有些迷茫。
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 的一部分,并且此函数正在特定调用之前编写 hook。
这类似于函数返回一个函数。在旧 javascript 中,这将是这样的:
function test() {
return async function() {
//do something(probably await op)
}
}
如果您没有传递大括号,则默认情况下箭头函数 returns 您指向的值。所以这样想,
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 的函数,我可以为不同的值创建更多乘数。