簡體   English   中英

箭頭功能ES6

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM