[英]Arrow function 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 =>
看起來像某種形式的雙箭頭功能?
我包括了hooks代碼,因為它是庫feathersjs的一部分,並且此函數在特定調用之前編寫了一個hook 。
如果沒有傳遞花括號,則默認情況下,箭頭功能將返回您指向的值。 所以這樣想吧
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
我基本上創建了一個函數multipliBy5,該函數創建了一個將我的值乘以5的函數,並且我可以為不同的值創建更多的乘數。
這類似於返回函數的函數。 在較舊的javascript中,它將類似於:
function test() {
return async function() {
//do something(probably await op)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.