![](/img/trans.png)
[英]How do I store functions with their parameters in an array and execute them sequentially?
[英]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.