除Console.log()外更多的Javascript调试命令


Posted in Javascript onJanuary 24, 2018

Console 对象提供对浏览器控制台的接入(如:Firefox 的 Web Console)。不同浏览器上它的工作方式是不一样的,但这里会介绍一些大都会提供的接口特性。

Console对象可以在任何全局对象中访问,如 Window,WorkerGlobalScope 以及通过属性工作台提供的特殊定义。
它被浏览器定义为 Window.Console,也可被简单的 Console 调用。

最常用的方法就是Console.log(),就是在控制台输出内容。刚开始学前端的时候看到大家都是用的Console.log(),几乎没有见过Console的其他用法,难道Console真的没有别的用法了?查了一下后发现Console还是非常强大的,至于为什么很少看到有人用可能是因为用过都删掉了吧。在此记录一下Console的其他用法。

注意:因为Console 对象提供对浏览器控制台的接入 所以在不同浏览器中的支持及表现形式可能不太一样,但是调试内容只有我们开发者会看,所以保证开发环境能用这些方法就可以了,下面演示全部都为Chrome上面的效果。

分类输出

不同类别信息的输出

console.log('文字信息');
console.info('提示信息');
console.warn('警告信息');
console.error('错误信息');

除Console.log()外更多的Javascript调试命令

分组输出

使用Console.group()Console.groupEnd()包裹分组内容。

还可以使用Console.groupCollapsed()来代替Console.group()生成折叠的分组。

console.group('第一个组');
 console.log("1-1");
 console.log("1-2");
 console.log("1-3");
console.groupEnd();
console.group('第二个组');
 console.log("2-1");
 console.log("2-2");
 console.log("2-3");
console.groupEnd();

除Console.log()外更多的Javascript调试命令

Console.group()还可以嵌套使用

console.group('第一个组');
 console.group("1-1");
  console.group("1-1-1");
   console.log('内容');
  console.groupEnd();
 console.groupEnd();
 console.group("1-2");
  console.log('内容');
  console.log('内容');
  console.log('内容');
 console.groupEnd();
console.groupEnd();
console.groupCollapsed('第二个组');
 console.group("2-1");
 console.groupEnd();
 console.group("2-2");
 console.groupEnd();
console.groupEnd();

除Console.log()外更多的Javascript调试命令

表格输出

使用console.table()可以将传入的对象,或数组以表格形式输出。适合排列整齐的元素

var Obj = {
 Obj1: {
  a: "aaa",
  b: "bbb",
  c: "ccc"
 },
 Obj2: {
  a: "aaa",
  b: "bbb",
  c: "ccc"
 },
 Obj3: {
  a: "aaa",
  b: "bbb",
  c: "ccc"
 },
 Obj4: {
  a: "aaa",
  b: "bbb",
  c: "ccc"
 }
}
console.table(Obj);
var Arr = [
 ["aa","bb","cc"],
 ["dd","ee","ff"],
 ["gg","hh","ii"],
]
console.table(Arr);

除Console.log()外更多的Javascript调试命令

查看对象

使用Console.dir()显示一个对象的所有属性和方法
在Chrome中Console.dir()Console.log()效果相同

var CodeDeer = {
 nema: 'CodeDeer',
 blog: 'www.xluos.com',
  
}
console.log("console.dir(CodeDeer)");
console.dir(CodeDeer);
console.log("console.log(CodeDeer)");
console.log(CodeDeer);

除Console.log()外更多的Javascript调试命令

查看节点

使用Console.dirxml()显示一个对象的所有属性和方法

在Chrome中Console.dirxml()Console.log()效果相同

百度首页logo的节点信息

除Console.log()外更多的Javascript调试命令

条件输出

利用console.assert(),可以进行条件输出。

当第一个参数或返回值为真时,不输出内容当第一个参数或返回值为假时,输出后面的内容并抛出异常

console.assert(true, "你永远看不见我");
console.assert((function() { return true;})(), "你永远看不见我");
console.assert(false, "你看得见我");
console.assert((function() { return false;})(), "你看得见我");

除Console.log()外更多的Javascript调试命令

计次输出

使用Console.count()输出内容和被调用的次数

(function () {
 for(var i = 0; i < 3; i++){
  console.count("运行次数:");
 }
})()

除Console.log()外更多的Javascript调试命令

追踪调用堆栈

使用Console.trace()来追踪函数被调用的过程,在复杂项目时调用过程非常多,用这个命令来帮你缕清。

function add(a, b) {
 console.trace("Add function");
 return a + b;
}
function add3(a, b) {
 return add2(a, b);
}
function add2(a, b) {
 return add1(a, b);
}
function add1(a, b) {
 return add(a, b);
}
var x = add3(1, 1);

除Console.log()外更多的Javascript调试命令

计时功能

使用Console.time()Console.timeEnd()包裹需要计时的代码片段,输出运行这段代码的事件。

Console.time()中的参数作为计时器的标识,具有唯一性。 Console.timeEnd()中的参数来结束此标识的计时器,并以毫秒为单位返回运行时间。最多同时运行10000个计时器。

console.time("Chrome中循环1000次的时间");
for(var i = 0; i < 1000; i++)
{
}
console.timeEnd("Chrome中循环1000次的时间");

除Console.log()外更多的Javascript调试命令

性能分析

使用Console.profile()Console.profile()进行性能分析,查看代码各部分运行消耗的时间,但是我在Chrome自带的调试工具中并没有找到在哪里查看这两个方法生成的分析报告。应该需要其他的调试工具。

有趣的Console.log()

最后再来介绍一下强大的Console.log(),这个方法有很多的用法(其他输出方法的用法,如error()等,可以参照log()使用)。

一、提示输出

可以再输出的对象、变量前加上提示信息,增加辨识度

var ans = 12345;
console.log("这是临时变量ans的值:",ans);

除Console.log()外更多的Javascript调试命令

二、格式化输出

占位符

含义 %s 字符串输出 %d or %i 整数输出 %f 浮点数输出 %o 打印javascript对象,可以是整数、字符串以及JSON数据

样例:

var arr = ["小明", "小红"];
console.log("欢迎%s和%s两位新同学",arr[0],arr[1]);
console.log("圆周率整数部分:%d,带上小数是:%f",3.1415,3.1415);

除Console.log()外更多的Javascript调试命令

三、自定义样式

使用%c为打印内容定义样式,再输出信息前加上%c,后面写上标准的css样式,就可以为输出的信息添加样式了

console.log("%cMy stylish message", "color: red; font-style: italic");
console.log("%c3D Text", " text-shadow: 0 1px 0 #ccc,0 2px 0 #c9c9c9,0 3px 0 #bbb,0 4px 0 #b9b9b9,0 5px 0 #aaa,0 6px 1px rgba(0,0,0,.1),0 0 5px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.3),0 3px 5px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.2),0 20px 20px rgba(0,0,0,.15);font-size:5em");
console.log('%cRainbow Text ', 'background-image:-webkit-gradient( linear, left top, right top, color-stop(0, #f22), color-stop(0.15, #f2f), color-stop(0.3, #22f), color-stop(0.45, #2ff), color-stop(0.6, #2f2),color-stop(0.75, #2f2), color-stop(0.9, #ff2), color-stop(1, #f22) );color:transparent;-webkit-background-clip: text;font-size:5em;');
console.log('%cMy name is classicemi.', 'color: #fff; background: #f40; font-size: 24px;');

除Console.log()外更多的Javascript调试命令

总结

Console的用法很多,有些再调试过程中非常实用,可以节省很多时间。当然我知道debug还是用断点调试的方法比较好,但是小问题用“printf大法”也是很好用的(滑稽脸)。

Javascript 相关文章推荐
为调试JavaScript添加输出窗口的代码
Feb 07 Javascript
JavaScript的parseInt 取整使用
May 09 Javascript
深入理解Javascript动态方法调用与参数修改的问题
Dec 10 Javascript
Lua表达式和控制结构学习笔记
Dec 15 Javascript
JavaScript中的null和undefined区别介绍
Jan 01 Javascript
jQuery+CSS3实现3D立方体旋转效果
Nov 10 Javascript
js生成随机数的过程解析
Nov 24 Javascript
简单三步实现报表页面集成天气
Dec 15 Javascript
解决AngualrJS页面刷新导致异常显示问题
Apr 20 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
Jul 24 Javascript
React组件对子组件children进行加强的方法
Jun 23 Javascript
微信小程序中button去除默认的边框实例代码
Aug 01 Javascript
深入理解node.js http模块
Jan 24 #Javascript
微信、QQ、微博、Safari中使用js唤起App
Jan 24 #Javascript
基于node打包可执行文件工具_Pkg使用心得分享
Jan 24 #Javascript
Angular整合zTree的示例代码
Jan 24 #Javascript
使用classList来实现两个按钮样式的切换方法
Jan 24 #Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
Jan 23 #Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
Jan 23 #Javascript
You might like
在 PHP 中使用随机数的三个步骤
2006/10/09 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
Yii框架中memcache用法实例
2014/12/03 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
PHP编译configure时常见错误的总结
2017/08/17 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
jquery 学习之二 属性相关
2010/11/23 Javascript
ie中js创建checkbox默认选中问题探讨
2013/10/21 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
jquery控制显示服务器生成的图片流
2015/08/04 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
js倒计时抢购实例
2015/12/20 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
2016/06/08 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
2018/08/10 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
2020/02/24 Javascript
js实现3D旋转相册
2020/08/02 Javascript
javascript前端和后台进行数据交互方法示例
2020/08/07 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
TensorFlow打印tensor值的实现方法
2018/07/27 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
幼儿园春季开学寄语
2014/04/03 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
微信小程序实现聊天室功能
2021/06/14 Javascript
CSS3中Animation实现简单的手指点击动画的示例
2021/07/15 HTML / CSS