javascript - 类型错误 : Illegal Invocation console. 日志

标签 javascript

我正在学习 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/

相关文章:

javascript - ReactJs - 触发点击带有类的元素

javascript - 当选择值状态更新时,不会调用 componentDidMount

javascript - 如何在 HTML 5 文档中添加 xml?

javascript - 在对另一个数组进行排序之前复制数组的顺序

javascript - Contenteditable 添加带有事件的内容而不替换

javascript - 如何顺序处理一系列 AJAX 请求的结果?

javascript - 将参数从 View 传递到 javascript

javascript - 如何在输入类型文本(文本字段)内创建表格?

javascript - 如何解决字体拦截问题?

vscode 中的 JavaScript 和 typescript 共享代码片段