【前端必知】console控制台总结

原文:https://juejin.cn/post/6918747647989940231

日志打印

控制台最常用的功能恐怕就是日志的打印查看了,但是大家都知道几种日志打印的方法呢,下面一个一个说。

console.assert(expression, object)

看名字assert(断言)差不多能猜出来是干嘛的。

console.assert(expression, object)

console.assert 接收两个参数,第一个是表达式,第二个是对象。

当表达式的值为 false 时,会打印一个错误,错误的内容就是第二个参数。

// 把这段代码copy到控制台执行
const x = 5;
const y = 3;
const reason = 'x is expected to be less than y';
console.assert(x < y, {x, y, reason});

会看到 reason 被打印出来。

image

这里我试了一下,第二个参数其实也可以是其他类型的数据。

console.clear()

这个方法式用来清空console控制台的,在刚才的控制台里输入 console.clear() 然后回车,可以看到信息都被清空了。

image

当然还有其他几种清空的方法

  • 执行 clear(),效果和console.clear()是一样的。
  • 在控制台 按 control + l 按键
  • 在控制台 按command + shift + p,然后输入 clear
image

第一项就是 Clear console,直接回车就好。

  • Mac 电脑上其实还可以通过按键 command + k来清空控制台。

console.count([label])

这个方法是用来打印调用 count 的次数,可以传入一个参数来当做标识。

console.count('coffee'); // 复制到控制台执行一次

我们会看到控制台会打印:coffee: 1,我们继续执行两次。

image

可以看到,coffee打印了三次。
如果不传参数,就是default,大家可以自己试一试。

console.countReset([label])

这个和console.count是对应的,用来重置计数的。

image

console.debug(object [, object, ...])

这个作用与 console.log 是相同的,区别是打印日志的级别不同。console.logInfo 级别, console.debugVerbose 级别。

image

console.dir(object)

这个方法用来打印指定对象的JSON形式。

image

这就是 document 对象的JSON形式的内容。

console.dirxml(object)

这个方法用来打印 node 节点的 xml形式。

image

console.error(object [, object, ...])

这个方法用来打印一个错误的信息,并且包含堆栈轨迹(就是错误发生的路径追踪)。

image

console.group(label)

这个方法可以将信息分组打印在一起,直到调用 console.groupEnd

// 把这段代码复制到控制台执行
const label = 'Adolescent Irradiated Espionage Tortoises';
console.group(label);
console.info('Leo');
console.info('Mike');
console.info('Don');
console.info('Raph');
console.groupEnd(label);
image

可以看到在 console.groupconsole.groupEnd 之间打印的信息出现在了一组中,可以被折叠和展开。

console.groupEnd(label)

这个就不说了,上面说过了,和 console.group 是对应的。

console.groupCollapsed(label)

这个的作用和 console.group 是相同的,区别是这个方法打印的日志会默认折叠起来。

还是上面那段代码,只不过把console.group 改成 console.groupCollapsed,再次执行。

image

可以看到信息默认折叠了。

console.info(object [, object, ...])

这个方法和 console.log 是相同的。

console.log(object [, object, ...])

在控制台打印一个信息。这个应该都很熟悉,用的也是最多的,就不说了。

console.table(array)

将信息打印为一个表格,比如数组

image

对象也可以

image

console.time([label])

用来开启一个新的定时器,知道调用 console.timeEnd,并将所消耗的时间打印出来。

// 复制到控制台执行
console.time();
for (var i = 0; i < 100000; i++) {
  let square = i ** 2;
}
console.timeEnd();
image

console.timecnsole.timeEnd 都是可以传一个参数的,作用和前面说的 console.count 类似。

console.timeEnd([label])

结束定时器,上面说过了。

console.trace()

打印堆栈追踪信息。

// 复制到控制台执行
const first = () => { second(); };
const second = () => { third(); };
const third = () => { fourth(); };
const fourth = () => { console.trace(); };
first();
image

可以看到执行 console.trace 把函数的调用信息都打印出来了。

console.warn(object [, object, ...])

打印一个警告信息。

image

到这里也说了好多种打印的方法了,但是打印的信息是分级别的,有错误、警告等。下面就总结一下。

方法 日志级别
console.count Info
console.dir Info
console.dirxml Info
console.info Info
console.log Info
console.table Info
console.timeEnd Info
console.trace Info
console.warn Warning
console.assert Error
console.error Error
console.debug Verbose
image

在控制台如果想要根据日志级别来过滤信息的话,可以通过上面图片中标出的地方,来做过滤。

方法

$_

$_ 返回的是最近的表达式的值。

image

$0 - $4

$0 - $4返回的是 Elements 面板中最近选择的五个DOM元素或者 Profiles 面板中最近选择5个Javascript堆对象的历史引用。 $0 是最近的引用,$1 是第二近的引用,依次类推。

image

$(selector, [startNode])

$ 用法与 Jquery 选择器有些类似,但是实际上使用的却是 document.querySelector() 方法.

该方法还接收第二个参数 startNode ,是一个 Node 节点,表示从此开始搜索。

image

$$(selector, [startNode])

$$ 与上面的 $ 选择器类似,只不过使用的是 document.querySelectorAll() 方法。

image

$$ 方法也支持第二个参数 startNode,如不传则默认为 document

$x(path, [startNode])

$x(path) 返回一个匹配给定XPath表达式的元素数组。

image

上面就是返回了一个包含当前页面所有 span 元素的数组。此方法也支持第二个参数 startNode

clear()

清空控制台历史,与 console.clear() 类似。

copy(object)

复制指定对象的字符串形式到剪切板。

debug(function)

该方法接受一个参数,是一个方法。当该方法被调用时,会进入debug。

可以调用 undebug(fn) 方法,来停止 debug。

dir(object)

dir() 方法与 console.dir() 方法相同,返回所传入对象的JSON形式。

image

dirxml(object)

dirxml()console.dirxml() 方法相同,返回所传入对象的XML形式。

inspect(object/function)

inspect() 在适当的面板中打开并选择指定的元素或对象: DOM元素的Elements面板或JavaScript堆对象的Profiles面板。

image

getEventListeners(object)

该方法返回注册在指定对象上的事件监听器,返回值是一个对象,包含每个注册事件类型的数组(例如,单击或按下键)。数组成员是该事件的侦听器对象。

image

keys(object)

该方法返回一个数组,包含传入对象的属性(键)的名称。可以通过 values() 方法来得到对象属性值的数组。

image

monitor(function)

当调用指定的函数时,控制台会记录一条消息,该消息指出函数名以及在调用函数时传递给函数的参数。

image

monitorEvents(object[, events])

这个方法接收两个参数,第一个是对象,第二个是事件,当传入的时间在指定对象上触发时,该事件对象会被打印出来。

image

第二个参数不止可以传入单个事件,还可以传入一个包含多个事件的数组。甚至还可以传入指定的事件类型。

monitorEvents(window, ["resize", "scroll"]); // 传入一个数组
monitorEvents($0, "key"); // 传入一个事件类型

具体事件类型如下:

image

profile([name])profileEnd([name])

profile() 启动一个Javascript Cpu 概括分析,可以传入一个参数(字符串)。profileEnd() 用来完成一个概要文件,并且在Profile面板显示结果。

queryObjects(Constroctor)

该方法返回指定构造函数创建的对象的数组。比如:

  • queryObjects(Promise) 返回所有的 Promise方法。

  • queryObjects(HTMLElement) 返回所有的HTML。

  • queryObjects(foo) 返回所有通过 new foo() 创建的对象。

image

queryObjects()的作用域是控制台中当前选择的执行上下文。

table(data[, columns]))

table()console.table() 方法类似。

image

undebug(function)

undebug(fn)停止对指定函数的调试。

unmonitor(function)

unmonitor(function) 用来停止对指定函数的监测。与 monotor() 方法对应。

unmonitorEvents(object[, events])

unmonitorEvents() 用来停止对传入对象的监测。与 monitorEvents() 方法对应。

values(object)

该方法上面已经说过了,返回包含指定对象的值的数组。


控制台的日志打印方式与各种快捷方法就说到这里,有错误和补充的欢迎提出指正,十分感谢!!!

参考:https://developers.google.com/web/tools/chrome-devtools/console

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容