Skip to content

你没听说过的 debug 函数

这回学的是真正的 debug 函数而不是 JS 的 debugger API。每个前端几乎都会 JS 的 debugger,但是据我观察不是每个人都用过 debugundebug 函数,而这两个函数非常的强大和有用。

首先,debugundebug 函数是 Chrome Devtools Console 的功能,非 Chrome 调试台的其他平台没有,比如 Firefox 浏览器的控制台就没有。

debug(function)

当用 debug 指定某个函数时(往往是某个事件函数),这个函数每次被调用,调试器会被调用并在Sources面板上的函数内部中断,允许单步执行代码并对其进行调试。 比如掘金某个路由可能会出现问题,这时候 debug 函数就大显神威了,我就可以这样调试:

js
debug(history.pushState)

当触发这个事件就能进行 debug 了。

因为 debug 函数只能在控制台应用,所以需要自己手动选择元素,这有些例子:

js
debug(document.body.scroll)
debug($0.onclick)
...

从使用方式上来讲 debugger 直接应用在代码内部,这种方式适合知道 bug 所处的位置,而 debug 函数是从外部往函数内插入 debugger,这种方式在排查一些线上 bug 尤其是不知道具体位置引发的 bug 比较有用。

undebug(function)

顾名思义,取消被 debug 的函数。

参考


原文