javascript - setTimeout(console.log.bind(console, "something")) 如何工作?

标签 javascript

阅读后How to hide source of Log messages in Console? ,我对这个命令的工作原理感到困惑。

我尝试不使用 setTimeout 来包装它,但控制台日志始终显示日志消息的来源。即使我尝试查看堆栈跟踪,它也只显示第二行之类的内容: enter image description here

setTimeout(console.log.bind(console, "something")) 的作用是什么? 而且setTimeout好像不能去掉?

还有其他方法可以做同样的事情吗?

最佳答案

让我们一点一点地来看:

  1. 什么是console.log.bind(console, "something")

    Function#bind function 创建一个新函数,调用时将使用第一个参数 this 来调用原始函数。用于通话并传递任何进一步的论据。所以console.log.bind(console, "something")创建(但不调用)一个函数,当调用该函数时,该函数将调用 console.logthis设置为console并传递"something"作为第一个参数。

  2. 什么是setTimeout(x, y)

    它调度函数xy 之后调用浏览器的毫秒数;如果您不提供y ,默认为0 (当前代码完成后立即回调)。

综合起来,setTimeout(console.log.bind(console, "something"))安排调用 console.log经过短暂的延迟后。

使用延迟意味着调用console.log不会直接从您执行此操作的代码中发生;浏览器调用 console.log直接,而不是在您的代码中。因此,堆栈跟踪不会显示它发生在您的代码中,因为它没有发生。

关于javascript - setTimeout(console.log.bind(console, "something")) 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37430531/

相关文章:

javascript - 我无法通过鼠标事件添加灯光

javascript - 正则表达式排除单词

javascript - 如何在 reactjs 拖动事件中隐藏重影图像?

javascript - 为什么这个 replace() 不替换 "my"?

javascript - 使用 google 脚本和 html 模板循环进入要点

javascript - 在 ListView 中居中文本 Jquery Mobile

javascript - Jquery 替换字符并应用类

javascript - 从同一页面上的 URL 链接到特定的 Twitter Bootstrap 选项卡

javascript - 如何为多行字符串中的特定文本添加粗体 Canvas ?

javascript - 循环遍历未隐藏的复选框