你可能不知道的Chrome Debug专用的函数!


本文摘自PHP中文网,作者青灯夜游,侵删。

在 Chrome 的 DevTools 中的控制台提供了一些 Debug 专用的函数,每一个都身怀绝技。

Console Utility Functions

这些函数只能用在 Chrome 的 console 中。当我在第一次看到这些函数时非常兴奋,把它们直接写到了自己的代码中,结果当然是跳出了各种 Uncaught ReferenceError:xxx is not defined 错误。

$_

$_ 会存储的执行结果,在控制台测试 JavaScript 的时候通常都需要逐步确认,这正是 $_ 的用武之地:

1.png

在遇到不能链式调用的函数时可以用 $_ 来避免游标被修改:

2.png

顺带提一句,将来也有可能会出现 Pipeline operator 来做到任意的函数链接,一次来促进提升性或避免修改内建原型。

1

2

3

4

5

6

let a;

a = 1

  |> ((n) => add(n, 5))

  |> double;

 

console.log(a); // 12

$, $$

$(selector[, element]), $$(selector[, element])

$$$ 分别就是 document.querySelectordocument.querySelectorAll 的缩写,其来源于大家都熟知的 JQuery。

第二个参数可以传入起始的元素,搭配 $0 就可以先检验一个元素,然后再从它开始搜寻。

1

$('.btn', $0)

我经常用 $$ 来快速测试一些东西,例如输出某个人 GitHub 页面的所有存储库名称:

3.png

不过如果已经把 JQuery 引入为 $ 的话,还是会正常执行 JQuery 的。

debug

debug(function)

参数为一个函数,只要执行到该函数就会触发调试器,可以用 undebug(fn) 来取消:

1

2

3

4

5

6

function a() {

  console.log(1);

}

 

debug(a);

// undebug(a);

其效果相当于:

1

2

3

4

5

6

7

8

9

10

function a() {

  console.log(1);

}

a = (function() {

  const origin = a;

  return function() {

    debugger;

    origin();

  }

})();

monitor

monitor(function)

用法和 debug 类似,monitor 函数被执行时会输出函数名称和参数,可用 unmonitor(function) 来停止,不过不能用于箭头函数,如果要监听箭头函数的执行就只能手动重写了。

monitorEvents

monitorEvents(element[, eventType])

可以监听并输出元素的特定事件,比较特别的是除了能监听单个事件,还能监听事件类型,例如输出 window 的点击事件和所有 touch 类别的事件:

4.png

效果和以下 JavaScript 相同:

1

2

3

4

5

window.addEventListener('click', console.log)

window.addEventListener('touchstart', console.log)

window.addEventListener('touchmove', console.log)

window.addEventListener('touchend', console.log)

window.addEventListener('touchcancel', console.log)

可以用 unmonitorEvents(element [, eventType])来停止监听。

9.gif

getEventListeners

getEventListeners(element)

输出已注册在元素上的监听器,就拿刚才的例子来说,输入 monitorEvents(element) 后再输入 getEventListeners(element) 就会看到所有事件都被注册了一波:

10.gif

阅读剩余部分

相关阅读 >>

javascript库是什么东西

了解javascript中的数据类型转换

js怎么替换字符串?

如何打开javascript

javascript如何将数组转换为字符串

一起看看 鸿蒙 javascript gui 技术栈

html标签伪元素绑定事件的三种方式

head标签中有什么属性?

javascript怎么删除表格行

jsp与javascript区别有哪些

更多相关阅读请进入《Chrome》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...