簡體   English   中英

用參數執行數組中的函數

[英]Execute functions in array with parameters

我想遍歷一個函數數組,並向每個函數傳遞一些參數。

let board;
let hand;

const HandCheckers = [
    CheckForRoyalFlush(board, hand),
    CheckForStraightFlush(board, hand),
    CheckForQuads(board, hand),
    CheckForFullHouse(board, hand),
    CheckForFlush(board, hand),
    CheckForTrips(board, hand),
    CheckForPairs(board, hand),
    CheckForHighCard(board, hand),
];

for (let x = 0; x < HandCheckers.length; x ++) {
       HandCheckers[x](board, hand);
}

但是,此代碼失敗,給我以下問題: ReferenceError:未定義板

我如何從帶有參數的數組中調用這樣的函數?

干杯!

現在,當您在數組中聲明函數時,它們正在執行。 如果只想存儲一個函數供以后在數組中執行,請不要使用()。 如果您希望函數在放置到數組中時而不是在遍歷數組時使用board和hand的值執行,請使用:

let HandCheckers = [
  CheckForRoyalFlush.bind(null, board, hand)
];
HandCheckers[0]();

如果要遍歷函數數組並傳遞參數 ,則僅存儲函數引用。 然后在執行操作時使用參數調用它們:

let board;
let hand;

const HandCheckers = [
    CheckForRoyalFlush,
    CheckForStraightFlush,
    /* ... */
]

// or use `HandCheckers.forEach(f => f(board, hand))`
for (let x = 0; x < HandCheckers.length; x ++) {
       HandCheckers[x](board, hand);
}

嘗試這個:

let board = 7;
let hand = 2;

const HandCheckers = [
    function CheckForRoyalFlush(board, hand){return board+hand},
    function CheckForStraightFlush(board, hand){return board*hand}
];

for (let x = 0; x < HandCheckers.length; x ++) {
    console.log(HandCheckers[x](board, hand));  
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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