console.log(object[, object, ...])
在控制台输出一条消息。如果有多个参数,输出时会用空格隔开这些参数。

第一个参数可以是一个包含格式化占位符输出的字符串,例如:

console.log("The %s jumped over %d tall buildings", animal, count);

上面的例子可以用下面的无格式化占位符输出的代码替换:

console.log("The", animal, "jumped over", count, "tall buildings");

并且,这两种方式是可以组合使用的。如果使用了格式化占位符,而提供的参数的个数多于占位符的个数,那么,多余的参数会以空格分隔的方式附加在字符串后面,就像:

console.log("I am %s and I have:", myName, thing1, thing2, thing3);

如果参数是一个Javascript对象,那么在控制台输出的就不是静态文字,而是一个可交互的超链接,点击超链接可以查看该对象的HTML, CSS, Script, DOM窗口,可用格式化字符串%o代替Javascript对象。

console.log("Body tag is %o", document.body);

格式化字符串列表:

格式化字符串 类型
%s 字符串
%d, %i 整型(暂不支持数字型)
%f 浮点型 (暂不支持数字型) 
%o 链接对象

console.debug(object[, object, ...])
在控制台输出一条消息,包含一个指向代码调用位置的超链接。假如是直接在控制台输入该命令,就不会出现超链接(和console.log()一样)。

console.info(object[, object, ...])
在控制台输出一条带有“信息”图标的消息和一个指向代码调用位置的超链接。

console.warn(object[, object, ...])
在控制台输出一条带有“警告”图标的消息和一个指向代码调用位置的超链接。

console.error(object[, object, ...])
在控制台输出一条带有“错误”图标的消息和一个指向代码调用位置的超链接。

console.assert(expression[, object, ...])
测试表达式expression是否为真。如果不是真,会在控制台写一条消息并抛出异常

console.dir(object)
以列表形式输出一个对象的所有属性,有点和你查看DOM窗口相类似。

console.dirxml(node)
输出一个HTML或者XML元素的XML源代码。和你在HTML窗口看到的相似。

console.trace()
Prints an interactive stack trace of JavaScript execution at the point where it is called.

The stack trace details the functions on the stack, as well as the values that were passed as arguments to each function. You can click each function to take you to its source in the Script tab, and click each argument value to inspect it in the DOM or HTML tabs.

console.group(object[, object, ...])
输出一条消息,并打开一个嵌套块,块中的内容都会缩进。调用console.groupEnd()关闭块。该命令可以嵌套使用。

console.groupEnd()
关闭最近一个由console.group打开的块。

console.time(name)
创建一个名字为name的计时器,调用console.timeEnd(name)停止计时器并输出所耗时间(毫秒)。

console.timeEnd(name)
停止同名的计时器并输出所耗时间(毫秒)。

console.profile([title])
打开Javascript性能测试开关。可选参数title会在打印性能测试报告时在报告的开头输出。

console.profileEnd()
关闭Javascript性能测试开关并输出报告。

console.count([title])

Writes the number of times that the line of code where count was called was executed. The optional argument title will print a message in addition to the number of the count.

Firebug是网页开发的利器,能够极大地提升工作效率。

但是,它不太容易上手。我曾经翻译过一篇《Firebug入门指南》,介绍了一些基本用法。今天,继续介绍它的高级用法。

===================================

Firebug控制台详解

http://www.ruanyifeng.com/blog/2011/03/firebug_console_tutorial.html

控制台(Console)是Firebug的第一个面板,也是最重要的面板,主要作用是显示网页加载过程中产生各类信息。

一、显示信息的命令

Firebug内置一个console对象,提供5种方法,用来显示信息。

最简单的方法是console.log(),可以用来取代alert()或document.write()。比如,在网页脚本中使用console.log("Hello World"),加载时控制台就会自动显示如下内容。

另外,根据信息的不同性质,console对象还有4种显示信息的方法,分别是一般信息console.info()、除错信息console.debug()、警告提示console.warn()、错误提示console.error()。

比如,在网页脚本中插入下面四行:

  console.info("这是info");

  console.debug("这是debug");

  console.warn("这是warn");

  console.error("这是error");

加载时,控制台会显示如下内容。

可以看到,不同性质的信息前面有不同的图标,并且每条信息后面都有超级链接,点击后跳转到网页源码的相应行。

二、占位符

console对象的上面5种方法,都可以使用printf风格的占位符。不过,占位符的种类比较少,只支持字符(%s)、整数(%d或%i)、浮点数(%f)和对象(%o)四种。

比如,

  console.log("%d年%d月%d日",2011,3,26);

  console.log("圆周率是%f",3.1415926);

%o占位符,可以用来查看一个对象内部情况。比如,有这样一个对象:

  var dog = {} ;

  dog.name = "大毛" ;

  dog.color = "黄色";

然后,对它使用o%占位符。

  console.log("%o",dog);

三、分组显示

如果信息太多,可以分组显示,用到的方法是console.group()和console.groupEnd()。

  console.group("第一组信息");

    console.log("第一组第一条");

    console.log("第一组第二条");

  console.groupEnd();

  console.group("第二组信息");

    console.log("第二组第一条");

    console.log("第二组第二条");

  console.groupEnd();

点击组标题,该组信息会折叠或展开。

四、console.dir()

console.dir()可以显示一个对象所有的属性和方法。

比如,现在为第二节的dog对象,添加一个bark()方法。

  dog.bark = function(){alert("汪汪汪");};

然后,显示该对象的内容,

  console.dir(dog);

五、console.dirxml()

console.dirxml()用来显示网页的某个节点(node)所包含的html/xml代码。

比如,先获取一个表格节点,

  var table = document.getElementById("table1");

然后,显示该节点包含的代码。

  console.dirxml(table);

六、console.assert()

console.assert()用来判断一个表达式或变量是否为真。如果结果为否,则在控制台输出一条相应信息,并且抛出一个异常。

比如,下面两个判断的结果都为否。

  var result = 0;

  console.assert( result );

  var year = 2000;

  console.assert(year == 2011 );

七、console.trace()

console.trace()用来追踪函数的调用轨迹。

比如,有一个加法器函数。

  function add(a,b){

    return a+b;

  }

我想知道这个函数是如何被调用的,在其中加入console.trace()方法就可以了。

  function add(a,b){

    console.trace();

    return a+b;

  }

假定这个函数的调用代码如下:

  var x = add3(1,1);

  function add3(a,b){return add2(a,b);}

  function add2(a,b){return add1(a,b);}

  function add1(a,b){return add(a,b);}

运行后,会显示add()的调用轨迹,从上到下依次为add()、add1()、add2()、add3()。

八、计时功能

console.time()和console.timeEnd(),用来显示代码的运行时间。

  console.time("计时器一");

  for(var i=0;i<1000;i++){

    for(var j=0;j<1000;j++){}

  }

  console.timeEnd("计时器一");

九、性能分析

性能分析(Profiler)就是分析程序各个部分的运行时间,找出瓶颈所在,使用的方法是console.profile()。

假定有一个函数Foo(),里面调用了另外两个函数funcA()和funcB(),其中funcA()调用10次,funcB()调用1次。

  function Foo(){

    for(var i=0;i<10;i++){funcA(1000);}

    funcB(10000);

  }

  function funcA(count){

    for(var i=0;i<count;i++){}

  }

  function funcB(count){

    for(var i=0;i<count;i++){}

  }

然后,就可以分析Foo()的运行性能了。

  console.profile('性能分析器一');

  Foo();

  console.profileEnd();

控制台会显示一张性能分析表,如下图。

标题栏提示,一共运行了12个函数,共耗时2.656毫秒。其中funcA()运行10次,耗时1.391毫秒,最短运行时间0.123毫秒,最长0.284毫秒,平均0.139毫秒;funcB()运行1次,耗时1.229ms毫秒。

除了使用console.profile()方法,firebug还提供了一个"概况"(Profiler)按钮。第一次点击该按钮,"性能分析" 开始,你可以对网页进行某种操作(比如ajax操作),然后第二次点击该按钮,"性能分析"结束,该操作引发的所有运算就会进行性能分析。

十、属性菜单

控制台面板的名称后面,有一个倒三角,点击后会显示属性菜单。

默认情况下,控制台只显示Javascript错误。如果选中Javascript警告、CSS错误、XML错误都送上,则相关的提示信息都会显示。

这里比较有用的是"显示XMLHttpRequests",也就是显示ajax请求。选中以后,网页的所有ajax请求,都会在控制台面板显示出来。

比如,点击一个YUI示例,控制台就会告诉我们,它用ajax方式发出了一个GET请求,http请求和响应的头信息和内容主体,也都可以看到。

[参考文献]

* Firebug Tutorial - Logging, Profiling and CommandLine (Part I)

* Firebug Tutorial - Logging, Profiling and CommandLine (Part II)

(完)

转载于:https://www.cnblogs.com/jazzka702/archive/2013/03/24/2978648.html

Console命令详解,让调试js代码变得更简单相关推荐

  1. chrome浏览器,调试详解,调试js、调试php、调试ajax

    1.可以看到js报错 2.可以看到php报错 3.可以看到ajax返回的信息,以及报错情况 4.可以看到调用了那些内容以及顺序 5.可以调试js代码 6.可以查看session等等 功能非常之强大. ...

  2. Linux下rm命令详解及C/C++代码实现

    rm 命令是 Unix/Linux 操作系统中的基本命令之一.rm(即删除)命令用于删除 Linux 和其他类 Unix 操作系统上的文件和目录.此命令通常以静默方式运行,运行 rm 命令时应非常小心 ...

  3. Linux 中的 chown 命令详解及C/C++代码实现

    操作系统中的不同用户拥有所有权和权限,以确保文件的安全并限制谁可以修改文件的内容.在 Linux 中,chown 命令用于更改系统中另一个用户对文件或目录的所有权. 什么是 chown 命令? cho ...

  4. jsfor循环终止_详解如何在JS代码中消灭for循环

    Edit: 在我入职第三家公司的第一天,看到代码库里面一堆的 for 循环,内心有些崩溃,于是做了一次技术分享,展示怎样在代码中避免 for 循环.这篇文章是那次分享的总结.本文并不完美,其中递归的部 ...

  5. Linux下zcat命令详解及C/C++代码实现

    如果一个压缩文件非常大,而您只想查看文件的内容是什么. 由于在这种情况下,文件的解压将花费大量时间,因此为了节省时间并在不解压文件的情况下查看文件,可以使用zcat命令. zcat 命令 通常 zca ...

  6. git 命令详解和Android Studio代码管理工具

    目录 前言 git命令上传项目 一.核心操作 二.解决冲突 三.情景举例 四.查看ssh密钥 五.克隆远程项目 六.回退某个操作 七.和远程分支建立关联 八.删除文件 九.远程仓储 十.多人协作 十一 ...

  7. Linux下dirname命令详解及C/C++代码实现

    dirname命令的基本用法非常简单--只需写下命令名,后跟文件的绝对名称即可. 在输出中,将获得完整的目录树,但文件名除外. linux dirname 命令 以下是 dirname 命令的通用语法 ...

  8. Linux 中的 nl 命令详解及C/C++代码实现(文件行数)

    在Linux 操作系统中,如果想编辑文本文件时,希望显示在其前面附加行号的行,这时 Linux 中 nl 命令就派上用场,nl 命令对文件中的行进行编号. Linux nl命令 nl 命令是一个 Un ...

  9. Linux下chmod命令详解及C/C++代码实现

    Linux 中对文件的访问由文件权限.属性和所有权控制. 因此,只有授权的用户和进程才能访问文件和文件夹.本篇使用 chmod 命令更改文件和目录的访问权限. Linux 文件权限 在这之前,让我们先 ...

最新文章

  1. C mysql添加_MYSQL将表 B C 插入表A方法
  2. OpenStack在dashboard界面点击管理员网络,服务器页面出错
  3. 运行nltk示例 Resource u'tokenizers punkt english.pickle' not found解决
  4. Streamy 使用RDBMS
  5. boost::hana::fold_right用法的测试程序
  6. 纽约时代广场广告费才7千元每天,花钱装逼值不值?
  7. oracle查询100到200数据,100分数据库查询语句(ORACLE 11g)
  8. CentOS下配置redis允许远程连接
  9. Intent以及IntentFilter详解 1
  10. 课设(房屋出租系统)
  11. 超好用的数学教学软件:几何画板Sketchpad for Mac中文版
  12. 五种知网文献免费下载方式
  13. 最基本的计算机度量单位是什么意思,计算机常用的度量单位
  14. 郑立:一个80后互联网创业神话的倒掉
  15. Excel中所有图片大小调整方法并将插入图片在单元格居中代码
  16. 抖音是如何做内容推荐的?
  17. Taro下拉刷新,上拉加载更多
  18. stm8 RTC自动唤醒
  19. 一节计算机课作文500,难忘的一堂课作文500字5篇
  20. 李嘉诚的人生感悟(ZT)

热门文章

  1. F2etest+UIRecorder(录制脚本)【2】
  2. html figure标签并排显示,html figure标签怎么用
  3. python查看文件有多少行_python如何判断文件有多少行
  4. 文件包含漏洞检测工具fimap
  5. Xamarin.Forms教程下载安装Windows版的Xamarin开发工具
  6. Kali Linux安全渗透教程1.1Linux安全渗透简介
  7. go where 不等于_go基础之map迭代(四)
  8. iOS更改状态栏前景色背景色
  9. 人工智能芯片借鉴大脑学习机制实现终身学习
  10. 帝国理工学院(IC)研究人员设计了一种可以解决瘫痪的脑机设备