除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 短路法代码精简
Aug 20 Javascript
javascript数字数组去重复项的实现代码
Dec 30 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
Nov 12 Javascript
第一次接触神奇的Bootstrap基础排版
Jul 26 Javascript
原生js实现对Ajax的封装(仿jquery)
Jan 22 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
Jul 10 Javascript
浅谈Node异步编程的机制
Oct 18 Javascript
jQuery实现的简单日历组件定义与用法示例
Dec 24 jQuery
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
Apr 28 Javascript
Angular value与ngValue区别详解
Nov 27 Javascript
微信浏览器左上角返回按钮监听的实现
Mar 04 Javascript
基于vuex实现购物车功能
Jan 10 Vue.js
深入理解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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
php截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
php实现无限级分类查询(递归、非递归)
2016/03/10 PHP
jquery tools之tooltip
2009/07/25 Javascript
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
2016/06/12 Javascript
NodeJs中express框架的send()方法简介
2017/06/20 NodeJs
vue axios同步请求解决方案
2017/09/29 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
详解vue使用$http服务端收不到参数
2019/04/19 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python的一些用法分享
2012/10/07 Python
Python Queue模块详细介绍及实例
2016/12/27 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
预订从美国飞往印度的机票:MyTicketsToIndia
2017/05/19 全球购物
幼师求职自荐信范文
2014/01/26 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
党委书记个人对照检查材料
2014/09/15 职场文书
工作失误检讨书范文
2015/01/26 职场文书
医务人员医德考评自我评价
2015/03/03 职场文书
离婚律师函范本
2015/05/27 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
2021/05/30 Javascript
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS
SQL CASE 表达式的具体使用
2022/03/21 SQL Server
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers