JavaScript最常用的调试工具就是console.info()了。console是浏览器中window对象的属性之一,由浏览器对象模型(BOM)提供,作用是访问浏览器控制台,你可以通过console输出有助于调试代码的字符串、数组、对象。console还附带了一些你平时不了解的好用方法,本文可以丰富你的调试工具。

我们一般通过

window.console.info('hello world');

或者

console.info('hello world');

由于window可以省略所以我们使用后者以精简代码。

输出信息到控制台的四种方式:

  1. console.log();

  2. console.info();

  3. console.warn();

  4. console.error();

我们唯一要做的就是给它们(方法)传递一个或者多个参数。控制台会显示不同的图标和颜色来表示其记录级别。见下图:

不同级别的记录打印代码

不同级别的记录打印效果

你会注意到error日志消息比其他消息更显眼。视觉上区分有助于开发者在控制台快速查看错误或警告信息等。你应该确保什么时候应该警示什么类别的日志信息。

也许上面的功能你已经很熟悉了,那么真正有价值的内容现在开始,请往下看。

字符串替换

这个技术可以使用字符串中的占位符来替换你向方法中传入的其他参数。

输入: console.info('hello %s', 'world');

输出: hello world

代码

效果

%s是第二个参数‘world’的占位符。任何的字符串、整数、数组都可以被转换成字符串并替换%s。如果你传入一个对象,它将显示为[object Object] 或 Object。

Firefox

chrome

如果你想传入对象,你需要使用 %o 或者 %O ,而不是 %s。

console.info('this is an object %o', {obj : 'object'});

传入对象

数字

字符串替换可以与整数和浮点数一起使用:

  • 整数 %i 或 %d

  • 浮点数 %f

输入: console.info('int: %d, float: %f', 1, 1.5);

输出: int: 1, float: 1.500000;

可以使用%.1f来格式化浮点数,这样就只显示一位小数, %nf ,你懂得(显示n为小数)。

总结一下格式化说明符:

  1. %s 使用字符串替换占位符

  2. %(d or i) 使用整数替换占位符

  3. %f ,%nf 使用浮点数替换占位符

  4. %o or %O 占位符显示为一个对象

  5. %c 应用提供css (PS: 可以自己尝试一下,或者看看下面的`彩蛋`吧)

字符串模板

ECMAScript6的出现,模板字符串是替换或连接的替代品。语法是使用反引号(``)来代替引号,变量包裹在 ${ } 中:

const a = 'world';

console.info(` hello: ${a} `);

// hello: world

对象在模板字符串中显示为[object Object]或 Object,所以你仍然可以使用 %o 或 %O 替换。

与你之前使用字符串拼接: console.info('hello: ' + str + '!');,使用替换或者模板创建是不是代码更易读呢!

彩蛋(*&……&*)

现在,我们来实现一个丰富多彩的console,当我们请求一个数据后,请求成功用绿色,请求失败用红色。先看效果:

丰富多彩的日志

const success = [ 'background: green', 'color: white', 'display: block', 'text-align: center' ].join(';');

const failure = [ 'background: red', 'color: white', 'display: block', 'text-align: center' ].join(';'); console.info('%c /dancing/bears was Successful!', success);

console.log({data: { name: 'Bob', age: 'unknown' }});

// "mocked" data response

console.error('%c /dancing/bats failed!', failure);

console.log('/dancing/bats Does not exist');

在字符串替换中使用(上文提到的) %c 占位符来应用你的日志打印行添加样式规则。 控制台仅支持少数CSS样式,并且因浏览器而异。

其他可用的方法

下面几个方法都不是API标准,所以你需要在高版本浏览器下使用。

1、 console.assert(boolean, param); 如果第一个参数计算为FALSE,那么返回第二个参数。如果为TRUE,那么不显示日志。

断言

2、 console.dir();显示一个传入对象的可交互属性列表,节省点开Object对象操作,还不错。

3、 console.table( ['javascript', 'php', 'java'] ); 用一个表格显示数组或对象

请点击此处输入图片描述

chrome用户请注意,table()是不能工作的,你可以通过将项目放入数组或对象来解决这个问题。

console.table( [['javascript', 'php', 'java']] );

4、 console.group(); 由至少3个console调用组成,它将输出多个层级,显示效果如下:

请点击此处输入图片描述

5、 console.time(id) 和 console.timeEnd(id) 启动id的定时器和停止id的定时器。

它可以同时运行多达10,000个定时器。

最后

console的有些方法虽然实用,但是因为它们的API依然在变动,具体可以访问

https://developer.mozilla.org/en/docs/Web/API/console

结尾

如果你喜欢我的内容请关注吧,共同学习共同进步!

感谢浏览~~

带你重拾JavaScript(2)之console的你所不知道的功能的更多相关文章

  1. js值----你所不知道的JavaScript系列(6)

    1.数组 在 JavaScript 中,数组可以容纳任何类型的值,可以是字符串.数字.对象(object),甚至是其他数组(多维数组就是通过这种方式来实现的) .----<你所不知道的JavaS ...

  2. 你所不知道的库存超限做法 服务器一般达到多少qps比较好[转] JAVA格物致知基础篇:你所不知道的返回码 深入了解EntityFramework Core 2.1延迟加载(Lazy Loading) EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public? 藏在正则表达式里的陷阱 两道面试题,带你解析Java类加载机制

    你所不知道的库存超限做法 在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限.虽然短短数语,却有着说不完,道不 ...

  3. JavaScript中你所不知道的Object(二)--Function篇

    上一篇(JavaScript中你所不知道的Object(一))说到,Object对象有大量的内部属性,而其中多数和外部属性的操作有关.最后留了个悬念,就是Boolean.Date.Number.Str ...

  4. 闭包----你所不知道的JavaScript系列(4)

    一.闭包是什么? · 闭包就是可以使得函数外部的对象能够获取函数内部的信息. · 闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. · 闭包就 ...

  5. js类型----你所不知道的JavaScript系列(5)

    ECMAScirpt 变量有两种不同的数据类型:基本类型,引用类型.也有其他的叫法,比如原始类型和对象类型等. 1.内置类型 JavaScript 有七种内置类型: • 空值(null) • 未定义( ...

  6. 【javascript杂谈】你所不知道的replace函数

    前言 最近在做面试题的时候总会用到这个函数,这个函数总是和正则表达式联系到一起,并且效果很是不错,总能很简单出色的完成字符串的实际问题,大家肯定都会使用这个函数,像我一样的初学者可能对这个函数的了解还 ...

  7. 重拾javascript动态客户端网页脚本

    笔记一: 一.DOM 作用: ·              DOM(Doument Object Model) 1.document文档 HTML 文件 (标记语言) <html> < ...

  8. 提升----你所不知道的JavaScript系列(3)

    很多编程语言在执行的时候都是自上而下执行,但实际上这种想法在JavaScript中并不完全正确, 有一种特殊情况会导致这个假设是错误的.来看看下面的代码, a = 2; var a; console. ...

  9. 你所不知道的JavaScript数组

    相信每一个 javascript 学习者,都会去了解 JS 的各种基本数据类型,数组就是数据的组合,这是一个很基本也十分简单的概念,他的内容没多少,学好它也不是件难事情.但是本文着重要介绍的并不是我们 ...

随机推荐

  1. 面向切面编程(Aop)

    AOP中的概念 AOP(Aspect Orient Programming),也就是面向切面编程.可以这样理解,面向对象编程(OOP)是从静态角度考虑程序结构,面向切面编程(AOP)是从动态角度考虑程 ...

  2. 为Android内核添加新驱动

    转载地址:http://blog.chinaunix.net/uid-16759545-id-4892379.html 1. 在drives目录下添加hello目录,内含hello.c Kconfig ...

  3. Configure Red Hat Enterprise Linux shared disk cluster for SQL Server——RHEL上的“类”SQL Server Cluster功能

    下面一步一步介绍一下如何在Red Hat Enterprise Linux系统上为SQL Server配置共享磁盘集群(Shared Disk Cluster)及其相关使用(仅供测试学习之用,基础篇) ...

  4. Python3.5 在Ubuntu16.04上无法画图的解决方案

    1. 问题由来 在使用下面的测试代码学习python时,用Pycharm画不出来图像,SPYDER3 可以画出来. 下面的代码来自:http://old.sebug.net/ # -*- coding ...

  5. 响应式网站-全屏banner响应的2中方法 - 被吃掉的banner

    通常来讲, 设计师们喜欢把banner设计成全屏(1920px或以上) 主题内容控制在一定的范围内一般在1200px左右 这样的设计即可以在宽屏上的表现很好.也能向下兼容一些小屏幕的设备: 如下图(所 ...

  6. Intellij Shortcuts

    ctrl+shift+F : search in whole project ctrl+hover : check the field info in brief ctrl+Q : check the ...

  7. Mac主机映射到域名

    1, control+space  打开spotlight, 搜索"终端" 2, 打开终端 3, 在"终端"界面中输入: sudo vi /etc/hosts ...

  8. 12款Linux系统恢复工具

    电脑死机,硬盘崩溃,花巨大的money搞个急救保护器……这都是计算机的阴暗面.时间一直这样走着,走着,不定哪天背点儿.对于电脑损坏造成的损失,着急抓狂毫无意义.相反,使用恰当的工具反而会最小化损失.你 ...

  9. ES6解构赋值详解

    文章转载自:http://www.zhufengpeixun.cn/article/167 解构赋值(destructuring assignment)语法是一个 Javascript 表达式,这种语 ...

  10. Range Modular Queries

    Range Modular Queries 题意 给出一个数列,q个查询,问查询区间内有几个数 a[i] % x == y. 分析 其实裸的分块就能过了,跑的还特别快. 这里分块的作用就是排序. 在x ...