Javascript调试之console对象——你不知道的一些小技巧


Posted in Javascript onJuly 10, 2017

前言

写过前端Javascript代码的同学肯定不会对console对象感到陌生,在调试的过程中我们经常会用console对象在控制台输出一些常量或者变量。

但是相信很多人也就只用过console.log()这一个方法,今天我们就一起来看看console对象还有哪些比较有用的方法。由于本篇文章是跟控制台有关,代码就直接在控制台展现而没有另外用新文件展示。

Javascript调试之console对象——你不知道的一些小技巧

不同级别日志

通过console对象的不同方法,可以在控制台上输出不同级别的日志信息,它们会采用不同的标志来展示,如下图所示。

Javascript调试之console对象——你不知道的一些小技巧

不同级别的日志

Javascript调试之console对象,它的一些小技巧你都知道吗?

包含占位符

在输出信息时可以通过%占位符来指定对应的值,而不用总是采用拼接字符串的方法。支持的占位符包括以下几种。

  • %s - 字符
  • %d - 整数
  • %f - 浮点数
  • %o - 对象

通过以下一个简单的例子可以看出其用法。

Javascript调试之console对象——你不知道的一些小技巧

包含占位符

Javascript调试之console对象,它的一些小技巧你都知道吗?

打印分组信息

通过group()方法可以以分组的形式展示出信息,类似于列表结构。

Javascript调试之console对象——你不知道的一些小技巧

打印分组信息

Javascript调试之console对象,它的一些小技巧你都知道吗?

表达式判断

在一些测试框架中,经常会用assert断言来判断一个表达式的值是否为真。同样在console对象中也有assert方法,在断言为真时并不会输出任何信息,而在断言为false时,直接抛出异常。

Javascript调试之console对象——你不知道的一些小技巧

表达式判断

上述代码中前两条语句判断结果都为true,所以没有输出任何信息,第三条语句判断结果为false,所以会直接抛出异常。

表格打印

console对象有个table方法,可以直接将对象类型的数据以表格展示。

Javascript调试之console对象——你不知道的一些小技巧

表格打印

函数调用栈信息

通过console.trace()方法可以展示出函数调用栈的信息,来查看函数调用过程,一般会选择将这个方法放在最后执行的函数的方法体中。

Javascript调试之console对象——你不知道的一些小技巧

函数调用栈信息

由于栈是先进后出机制,所以先执行的方法会在后面输出,因此上述代码结果会按照sum, f2, f1的顺序输出。

计时

一般统计一段代码执行耗时,方法会是通过Date对象获取毫秒数,然后将两个毫秒数进行相减。

Javascript调试之console对象——你不知道的一些小技巧

一般计时方法

在上述代码中通过endTime和startTime两个变量的差值来计算出中间执行代码的耗时,我们可以看出往一个数组中添加100000个字符串耗时为15毫秒。

同样可以通过console对象的time()和timeEnd()方法来统计代码段的执行耗时。time()和timeEnd()可以接收一个字符串作为标识,而且两个方法接收的字符串必须一样,如果没有传入字符串则默认为‘default'字符串。

Javascript调试之console对象——你不知道的一些小技巧

 console对象计时方法

上述代码执行结果为16毫秒,与之前那个方法产生的结果大致一样。

性能分析

通过console.profile()和console.profileEnd()方法,可以展示出代码中各个函数执行所消耗的时间,可以用来评估代码性能。

我们使用以下测试代码来进行说明。

Javascript调试之console对象——你不知道的一些小技巧

打开chrome浏览器的控制台会有一个Javascript Profile菜单栏,如果默认情况下没有的话,可以按照以下方法打开。

Javascript调试之console对象——你不知道的一些小技巧

 Javascript Profile

打开这个菜单选项后,我们可以看出每个方法执行消耗的时间。

Javascript调试之console对象——你不知道的一些小技巧

时间消耗

以上所述是小编给大家介绍的Javascript调试之console对象——你不知道的一些小技巧,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
基于jquery的Repeater实现代码
Jul 17 Javascript
js实现可拖动DIV的方法
Dec 17 Javascript
原生js和jquery中有关透明度设置的相关问题
Jan 08 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
Aug 07 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
Apr 12 Javascript
老司机带你解读jQuery插件开发流程
May 16 Javascript
基于rem的移动端响应式适配方案(详解)
Jul 07 Javascript
bootstrap datetimepicker控件位置异常的解决方法
Nov 23 Javascript
基于滚动条位置判断的简单实例
Dec 14 Javascript
JavaScript复制内容到剪贴板的两种常用方法
Feb 27 Javascript
vue.js 子组件无法获取父组件store值的解决方式
Nov 08 Javascript
如何实现echarts markline标签名显示自己想要的
Jul 20 Javascript
vue实现表格数据的增删改查
Jul 10 #Javascript
激动人心的 Angular HttpClient的源码解析
Jul 10 #Javascript
基于JS实现仿京东搜索栏随滑动透明度渐变效果
Jul 10 #Javascript
jQuery实现QQ空间汉字转拼音功能示例
Jul 10 #jQuery
Underscore之Array_动力节点Java学院整理
Jul 10 #Javascript
Angular.js ng-file-upload结合springMVC的使用教程
Jul 10 #Javascript
underscore之Collections_动力节点Java学院整理
Jul 10 #Javascript
You might like
ThinkPHP写第一个模块应用
2012/02/20 PHP
php实现网页上一页下一页翻页过程详解
2019/06/28 PHP
javascript 动态添加表格行
2006/06/22 Javascript
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
Javascript Throttle & Debounce应用介绍
2013/03/19 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
node.js支持多用户web终端实现及安全方案
2017/11/29 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
Python批量修改文件后缀的方法
2014/01/26 Python
Python打印输出数组中全部元素
2018/03/13 Python
Python中XlsxWriter模块简介与用法分析
2018/04/24 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
python绘图模块matplotlib示例详解
2019/07/26 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
业务副厂长岗位职责
2014/01/03 职场文书
关于感恩的演讲稿400字
2014/08/26 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
入党团支部推荐意见
2015/06/02 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
Golang全局变量加锁的问题解决
2021/05/08 Golang
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android