你没听说过的 debug 函数
这回学的是真正的 debug 函数而不是 JS 的 debugger API。每个前端几乎都会 JS 的 debugger
,但是据我观察不是每个人都用过 debug
和 undebug
函数,而这两个函数非常的强大和有用。
首先,debug
和 undebug
函数是 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
的函数。