我有一個函數使用Array.prototype.forEach並將回調傳遞給它。我想將該回調提取到一個單獨的函數中,以便測試它。問題是回調使用了來自外部函數的參數,回調的簽名當然是由Array.prototype.forEach決定的,我無法更改它。有什麼辦法可以解決這個問題嗎?代碼示例如下:如何提取關閉一些變量的匿名回調?
var enableMarks = function (arrEvents, arrGeneratedEvents) {
var marksLength = arrEvents[0].marks().length;
var generatedMark;
var i;
for (i = 0; i < arrGeneratedEvents.length; i++) {
programEvents.forEach(function (programEvent) {
if (programEvent.pairOrderToShow === arrGeneratedEvents[i]) {
generatedMark = generateNumber(0, marksLength - 1);
}
//some other code here, not important for question
});
}
};
所以,我的回調從外部函數使用arrGeneratedEvents,我不知道是否有可能以某種方式傳遞這個提取回調。
我不確定這會起作用。 'testFun(elem to pass)'不計算爲函數類型(並且'forEach'需要函數類型)。 –
@OliverCharlesworth我指的是這裏給出的第一個例子 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach – brk
我在那裏沒有看到任何例子這不會將函數類型傳遞給'forEach';) –