使用chrome调试工具解决问题(二)

控制台(Console)选项卡

它会收集到我们浏览器在整个的运行期间所产生的一些信息,我们经常使用这个console.log()在控制台里面去打印一些东西。Console对象不仅仅有log函数,它有很多很多的函数。

debug(‘打印调试信息’)

浏览器在默认情况下,是隐藏这个调试信息的,那么我们如何来打开呢?

找到默认级别(All levels)选项,勾选详细(Verbose)就可以看到调试信息了,这个debug()跟log()没有什么本质的区别,只是浏览器会把它归类到详细(Verbose)类型里面去,这里边显示的一些消息一般级别很低,如页面上有一个循环,它卡的时间比较长,那么它就会显示到这个地方,默认情况下是不显示的。

log(‘打印消息’)

打印消息,在开发中常用的打印方法。

info(‘打印消息’)

在谷歌浏览器中显示效果同‘log()’,在safari浏览器中打印消息前会有个蓝色感叹号

table()表格

console.table([{name:'前端'},{name:'学习'},{name:'笔记'}])

当我们通过网络请求,拿到一个对象数组,这时候如果用console.log去打印的话,打印出来的结果不利于观察,如果用table打印的话,它会给你列出详情,它会把这里边的每一个对象的每一个属性形成一个列,看上去比较直观一点。

group(‘分组’)~groupEnd(‘分组’)

有的时候,我们打印的消息可能比较多,当我们在一个方法里边可能要打印很多的消息,我们可以把一些同类型的消息分成一个组。

const name = '分组名称'

console.group(name)

//console.groupCollapsed(name) //打印结果默认展开,开启可设置默认折叠

console.log('前端')

console.log('学习')

console.log('笔记')

console.groupEnd(name)

dir(‘对象结构’)

当我们直接用log打印DOM时展现的的时元素结构,如果我们想要展现它的对象结构需要用到dir。

console.dir(document.body)

time(‘计时’)~timeEnd(‘计时’)

当我们要比较几段代码它们的耗时时间,我们会用到time,在代码开始之前加上console.time(‘计时’),表示计时开始,在代码结束位置加上console.timeEnd(‘计时’),表示计时结束,运行得到耗时时间。

count(‘计数’)

const start = Date.now()

while (Date.now() - start < 20){

console.count('loop') // 调用一次就会累加一次

}

console.countReset('loop') // 对loop计数清零

trace(‘打印消息’)堆栈

当我们代码量很大,特别是在一些框架里,分成很多的文件,分成很多的模块和子函数,有的时候,我们一个函数,它可能会被多个地方所调用,但是突然有一天,这个函数运行的过程中,出了一些问题,没有报错,但是达不到我们的预期,这时需要知道这个函数到底是被谁在调用,那么我们可以通过在这个函数里边使用console.trace()把堆栈信息打印出来,从而找到是谁调用出了问题。

在函数B里边打印了console.trace(),然后函数a调用函数B,然后运行函数a,看一下最终输出的结果,它会告诉你,打印的位置,在B函数里边,然后a调用了B,全局调用的是a。

assert(‘断言’)

assert可以做一些简单的测试,当测试结果为真时不会打印,当测试结果为假时会输出“断言失败”

warn(‘警告消息’)

是写框架或者是写库的人用的比较多,当你用了一个不合适的方法,或者你用了一些快要过时的API的时候,可能会给你写一些警告。

error(‘错误消息’)

也是写框架或者是写库的人用的比较多,当你有一些严重错误的用法,可能会用error打印错误消息。

clear(‘清空消息’)

把之前的打印消息呢全部清空。

给消息添加样式

const styles = `color:red;font-size:30px;border:5px solid #90442E`

console.log('%c给打印信息加样式',styles)

要在打印信息前添加‘%c’

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容