我正在学习 JavaScript 抽象。我想将一个函数作为参数传递给另一个函数。当我传入 console.log 时,它会返回 TypeError:Illegal incalling
function forEvery(array,action){
for(var i=0;i<array.length;i++){
action(array[i]);
}
}
forEvery(["test1","test2","test3"],console.log);
我希望这会记录传递的数组中的所有元素。
最佳答案
问题在于 console.log
未使用正确的上下文 (this
) 进行调用。
改变
forEvery(["test1","test2","test3"],console.log);
至
forEvery(["test1","test2","test3"], Function.prototype.bind(console.log, console));
请注意,使用非 native 函数会更简单:您会使用
forEvery(["test1","test2","test3"], console.log.bind(console));
它也适用于大多数浏览器。
但是 IE9(可能还有其他一些版本)有一个“限制”。 See related question .
关于javascript - 类型错误 : Illegal Invocation console. 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30347404/