我有一个函数使用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';) –