在调试 JS 代码时,很多人倾向于使用 alert() 或者 console.log() 方法来输出信息,正如某些 Java 程序员喜欢在调试代码时使用System.out.println() 输出信息一样。但与 Java 输出不一样的是, console 对象拥有多种方法可以更好的呈现信息,从而给代码调试带来方便。根据常用程度,列出以下几种 console 对象的方法:

console.log()console.debug()、console.info()、console.warn() 与 console.error()console.table()console.time() 与 console.timeEnd()console.assert()console.count()console.group、console.groupEnd() 与 console.groupCollapsed()console.dir()以下示例的运行环境是 Chrome 53。

console.log()

先来谈谈我们最熟悉也最常用的 console.log() 方法。

我们最常用的做法是通过它来输出一个变量或者输出一个字符串。比如下面:

console.log("Hello China!");conststr = "Hello world!";console.log(str);运行结果如下:

Hello China!Hello world!但我们也可以这样用 console.log() :

// 代码段 1conststr1 = "hello";conststr2 = "world";console.log(str1, str2);// 代码段 2console.log("%d年%d月%d日", 2015, 09, 22);控制台会输出:

hello world2015年9月22日代码片段 1 显示,console.log() 的参数可以有多个,输出的结果以一个空格隔开。

代码片段 2 显示,console.log() 可以使用 C 语言 printf() 风格的占位符,不过其支持的占位符种类较少,只支持字符串(%s)、整数(%d或%i)、浮点数(%f)和对象(%o)。

console.debug()、console.info()、 console.warn() 与 console.error()

这四个方法的使用方法跟 console.log() 一模一样,差别在于输出的颜色与图标不同。下面是示例:

console.log("log");console.debug("debug");console.info("info");console.warn("warn");console.error("error");运行结果如下:

console.table()

我们看下面一个变量:

constpeople = {"person1": {"fname": "san", "lname": "zhang"}, "person2": {"fname": "si", "lname": "li"}, "person3": {"fname": "wu", "lname": "wang"}};我们用 console.log() 将之在 Chrome 的控制台中输出:

再用 console.table() 输出:

所以从上面两种输出我们可以看出,当输出类似于这种两层嵌套的对象时,我们可以选择 console.table() 以表格的形式输出。当然,嵌套三层及以上的也会以表格形式输出,但限于表格只能显示二维信息的特点,其会在嵌套三层或以上的地方会显示 "Object" 字符串。

console.time() 与 console.timeEnd()

在调试时,我们经常需要知道一段代码执行时间,我们可以使用这两行代码来实现。看下面一段代码:

console.time("for-test");constarr = [];for(leti = 0; i < 100000; i++) {arr.push({"key": i});}console.timeEnd("for-test");输出为:

for-test: 16.030ms // Chrome 这优化做的,版本 43 中的时间是:176.152ms从上面的例子可以看出,我们用 console.time() 和 console.timeEnd() 包围要测试运行时间的代码,这两个方法的参数保持一致,以便正确识别和匹配代码开始和结束的位置。

console.assert()

console.assert() 类似于单元测试中的断言,当表达式为 false 时,输出错误信息。示例如下:

constarr = [1, 2, 3];console.assert(arr.length === 4);输出结果如下:

console.count()

调试代码时,我们经常需要知道一段代码被执行了多少次,我们可以使用 console.count() 来方便的达到我们的目的。示例如下:

functionfunc() {console.count("label");}for(leti = 0; i < 3; i++) {func();}运行结果为:

label: 1label: 2label: 3console.group()、 console.groupEnd() 与 console.groupCollapsed()

一般的 console.log() 方法的输出没有层级关系,在需要一些显示层级关系的输出中显得苍白无力,使用 console.group() 可以达到我们的目的。示例代码如下:

console.group("1");console.log("1-1");console.log("1-2");console.log("1-3");console.groupEnd();console.group("2");console.log("2-1");console.log("2-2");console.log("2-3");console.groupEnd();运行结果为:

把 "group" 换成 "groupCollapsed",则默认为折叠运行结果。

console.dir()

console.dir() 是干嘛的?MDN 上说这个方法是为了将特定的 JS 对象显示为可以交互的列表,而列表是折叠起来的。这么说有点抽象,看我在 Chrome 控制台输出的效果:

从上图可以看到,用 console.dir() 输出的结果是完全折叠的,所以大家能够理解我为什么不会用 console.dir() 方法了。然后我又用 Firefox 测试了一下:

怪不得有小伙伴喜欢用这个方法,原来在 Firefox 的控制台中,console.dir() 能够将一个折叠的对象显示为一个清晰的导航树。

再看一个对比:

写到这里可以说,如果在 Chrome 环境下进行开发,如果输出一般的对象,推荐使用 console.log(),而在 Firefox 环境下,想要清晰地显示一个对象,console.dir() 还是比较推荐的。

对于 Chrome 用户来讲,console.dir() 是不是就没用了呢?然而并不是:

在 Chrome 中打印 DOM 元素时,两个方法输出的结果大不一样。console.log() 会将 DOM 元素以 HTML 的形式输出,而 console.dir() 则会以 JSON 对象的形式输出。

java高效代码_Java工程师该如何编写高效代码?相关推荐

  1. Java工程师该如何编写高效代码?

    在调试 JS 代码时,很多人倾向于使用 alert() 或者 console.log() 方法来输出信息,正如某些 Java 程序员喜欢在调试代码时使用System.out.println() 输出信 ...

  2. java 编写代码_Java 7:如何编写非常快速的Java代码

    java 编写代码 当我第一次写此博客时,我的目的是向您介绍ThreadLocalRandom类,它是Java 7中新增的用于生成随机数的类. 我在一系列微基准测试中分析了ThreadLocalRan ...

  3. java工作描述_java工程师工作描述状况是干什么的?需要身怀哪些技能呢?

    有时候,小编也会想Java工程师是干什么的?需要掌握哪些技能等等一系列问题,小伙伴们是不是跟小编有同样的疑惑呢?接下来就跟小编一起了解Java工程师的工作当中的问题吧. 首先Java工程师的是做什么的 ...

  4. rsa java代码_java加解密RSA使用方法代码示例

    最近为了分析一段请求流,不得不去研究一下RSA加密. 首先,强调一点:密钥的"钥"读"yue",不是"yao",额... 网上关于RSA的原 ...

  5. android程序内下载文件,android文件下载代码 android程序 里如何编写下载代码

    android开发文件下载在手机报错 package cc.download; import android.app.Activity;import android.os我比任何人都懂你不会真的陪我到 ...

  6. python测试代码怎么写_python unittest编写测试代码

    做开发的朋友在写代码的同时一般都会写测试代码,这对于做运维的同学却很少用. 今天我们就来写写测试代码,用unittest模块. cat test.py import unittest def IsOd ...

  7. java jmf 视屏监控的核心代码_Java中利用JMF编写摄像头拍照程序_java

    我把程序分为两种,有趣的和无趣的,最近做了几个有趣的项目,其中一个,应当就算是摄像头拍照程序了.用于现场拍照,生成照片,主要用到java Media Framework(JMF). 首先到SUN下载最 ...

  8. java技能要求_Java工程师需要具备的25个技能

    在Java工程师日常的开发过程中,由于业务的不同,可能关注的点有很多不一样的地方,但是在技术掌握层面还是有一些共性的. 本文概括了在Java工程师开发.测试.部署等方面的25个必备技能,供大家参考. ...

  9. java记事本教程_Java实战_手把手编写记事本

    Java运用SWT插件编写桌面记事本应用程序 可实现windows系统桌面记事本基本功能.傻瓜式教学,一步一步手把手操作.小白也可自己编写出完整的应用程序. 须要工具:Eclipse(带SWT插件) ...

最新文章

  1. Reinhard经典色彩迁移算法
  2. 13 迷人的注册表单设计
  3. 转:Eclipse自动补全功能轻松设置
  4. 联想云:借助云计算助力中国企业数字化转型
  5. SqlServer中怎样从Excel中导入数据
  6. ATT开源项目反客为主
  7. redux 存值 及 取值 的操作
  8. java csf_WebService CSF使用详解 | 学步园
  9. Oracle给表和字段添加注释
  10. 信息学奥赛一本通(1219:马走日)
  11. [转]VS清除打开项目时的TFS版本控制提示
  12. 专访全面智能CTO陈章:想法只有在技术落地的那一刻才有撬动地球的能力
  13. mysql按照音序排列_如何按音序排列
  14. 浅谈对统计机器学习的认识
  15. 计算机卡登录界面,win10系统卡在登录界面怎么办 windows10卡在登录界面的解决方法...
  16. (三十七)java SpringCloud版本b2b2c鸿鹄云商平台全套解决方案
  17. iOS中调用短信和邮箱的方法
  18. 用python实现FMM和BMM
  19. 阿里云ECS服务器跨账号迁移
  20. python通过关键字搜索淘宝商品详细信息

热门文章

  1. 超级的全中文语音数据集合
  2. Linux下Tomcat的启动、关闭、杀死进程
  3. java --String类解决面试问题
  4. IBM RSA(Rational Software Architect)试用版下载地址
  5. log4j 超完美配置文件!
  6. Spring的属性依赖检查
  7. 先考学历还是先提升能力?
  8. Silverlight+WCF 实战-网络象棋最终篇之解决重复的消息提示(八)
  9. 好东西和大家分享阿!
  10. 微信小程序底部导航Tabbar