• console调试--转


    目录:

    一、什么是 Console
    二 、什么浏览器支持 Console
    三、为什么不直接使用 alert 或自己写的 log
    四、console.log(object[,object,.....])
    五、console.debug,info,warn,error
    六、console.assert(expression[, object, ...])
    七、console.clear()
    八、console.dirxml(node)
    九、console.trace()
    十、console.group(object[, object, ...]), groupCollapsed, groupEnd
    十一、console.time(name)/console.timeEnd(name)
    十二、console.profile(name)/console.profileEnd()
    十三、console.count([title])
    十四、console.table(data)
    十五、console.dir(function)
    十五、tab键代码补全
    十五、百度首页的彩蛋!

    一  什么是 Console

    Console 是用于显示 JS和 DOM 对象信息的单独窗口。并且向 JS 中注入1个 console 对象,使用该对象 可以输出信息到 Console 窗口中。

    二  什么浏览器支持 Console

    很多人可能都知道 Chrome 和 FireFox(FireBug)中都支持 Console。而其他浏览器都支 持不好。比如 IE8 自带的开发工具虽然支持 Console,但功能比较单调,显示对象的时候都是显示 [Object,Object],而且不能点击查看对象里面的属性。IE6、IE7 虽然可以安装 Developer Toolbar,但也 不支持 console。Safari、Opera 都支持 Console,但使用上都没有 FireBug和 Chrome 的方便。 现在firebug推出了 firebuglite工具,可以让所有浏览器都支持Console功能,而且使用上和FireBug 几乎一样。详见http://getfirebug.com/firebuglite

    三  为什么不直接使用 alert 或自己写的 log

    使用 alert 不是一样可以显示信息,调试程序吗?alert 弹出窗口会中断程序, 如果要在循环中显示信息,手点击关闭窗口都累死。而且 alert 显示对象永远显示为[object ]。 自己写的 log 虽然可以显示一些 object 信息,但很多功能支持都没有 console 好,看完后面 console 的介绍就知道了。
    (部分比较鸡肋的方法没有列出来,用粗蓝标出来的是常用的方法)

    四、console.log(object[,object,.....])

    Console.log 是最简单输出信息到 console 窗口的方法,支持多个参数,该方法会把 这些参数组合在一起显示
    我们首先来写一段倒计时的代码
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
      <title>倒计时</title>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
     </head>
    <body>
      <h1>倒计时:<span>10</span></h1>
      <script type="text/javascript">
        $(document).ready(function(){
            var num = $("h1 span").first();
            var i = 9;
            var interval = setInterval(function(){
                num.text(i);
                i--;
                console.log("当前数值:"+i);
                if(i < 0){
                    clearInterval(interval);
                }
            },1000);
        });
     </script>
    </body>
    </html>
    我们在line:16加入console.log("当前数值:"+i); 那么在控制台中将输出每次i的值:
    2014年06月25日 - 月上西楼 - 月上西楼

     log 方法第一个参数支持类似 C 语言 printf 字符串替换模式,Log 支持下面几种替换模式:

    • %s  代替字符串
    • %d  代替整数
    • %f  代替浮点值
    • %o  代替 Object

    例如,我们输出一个时间日期:

    console.log("%d年%d月%d日"2014,6,25);
    2014年06月25日 - 月上西楼 - 月上西楼
    比如,我们要把月份“6月”变成“06月”,那么可以使用“%s”,在传入参数的时候要用引号:
    console.log("%d年%s月%d日",2014,'06',25);
    2014年06月25日 - 月上西楼 - 月上西楼
    五  console.debug,info,warn,error

    这 4 种方法与 log 方法使用一模一样,只是显示的图标和文字颜色不一样.

    2014年06月25日 - 月上西楼 - 月上西楼

    六  console.assert(expression[, object, ...])

    assert 方法类似于单元测试中的断言,当 expression 表达式为 false 的时候,输出后面的信息,e.g:
    2014年06月25日 - 月上西楼 - 月上西楼
     
    注:assert 方法在 firebuglite 不支持,Chrome 和 FireBug 支持

    七  console.clear()

    该方法清空 console 中的所有信息 (Chrome中不支持)

    八  console.dirxml(node)

    把 html 元素的html 代码打印出来,等同于log.

    九  console.trace()

    trace 方法可以查看当前函数的调用堆栈信息,即当前函数是如何调用的
    2014年06月25日 - 月上西楼 - 月上西楼
     
    十  console.group(object[, object, ...]), groupCollapsed, groupEnd
    这 3 个函数用于把 log 等输出的信息进行分组,方便阅读查看。
    groupCollapsed 方法与 group 方法一样,只是显示的分组默认是折叠的.
     
    注意:如果后面不跟console.groupEnd(),则第二个分组默认是第一个分组的子节点。
    2014年06月25日 - 月上西楼 - 月上西楼
    十一  console.time(name)/console.timeEnd(name)
    我们经常需要测试 js 函数的执行时间,可能我们自己写代码在第1 条语句和 最后 1 条语句取当前时间相减。这组函数其实就实现了这样的功能,time(name)根据 name 创建 1 个新 的计时器。timeEnd(name)停止给定name 的计时器,并显示时间。
    下面给个空的for循环,打印0-1000的i的值,用时124.61ms:
    2014年06月25日 - 月上西楼 - 月上西楼
    十二  console.profile(name)/console.profileEnd()
    这组方法用于打开浏览器的分析器,用于分析这组函数之间的 js 执行情况
    注:firebuglite 不支持 profile 功能,Chrome 支持 profile,但分析的内容不详。

    十三  console.count([title])

    count 方法用于统计当前代码被执行过多少次,title 参数可以在次数前面输出额外的标题以帮助阅读。e.g:
    $(function(){
       test();
       test();
       test();
       test();
    });
     
    var test = function(){
        console.count("test被执行次数:");
    };

    在Chrome中的结果,会打印出累积次数:

    2014年06月25日 - 月上西楼 - 月上西楼

    而在fireBug中只会显示最后一次最终的次数:test被执行次数:4。

    十四  console.table(data)

    table 方法把data 对象用表格的方式显示出来,这在显示数组或者格式一样的JSON 对象的时候非常有用。
    注:table 只支持 FireBug,而且是在 firebug1.6+版本后才有。

    此内容将单独开一篇博客,请见《利用console.table()做高级JS调试、Console用法总结(2)》

    十五  console.dir(function)

    dir方法是把列出对象的所有方法。比如,我们显示console对象下都些什么方法:
    console.dir(console);
    2014年06月25日 - 月上西楼 - 月上西楼

    十五  tab键代码补全

    此功能只针对fireBug下,在Chrome下自带代码提示功能
    在fireBug下输入co再按Tab键,将会出现代码提示:
    2014年06月25日 - 月上西楼 - 月上西楼
    而在Chrome下边输入边出现代码提示,很强大。

    十五  百度首页的彩蛋!

    打开百度首页,查看Javascript输出控制台,呵呵,你发现了什么?百度的招聘启事:
    2014年06月25日 - 月上西楼 - 月上西楼
  • 相关阅读:
    扯一下关于魔兽改键的蛋
    Emacs23.3在ubuntu10.10下的手动编译与安装
    GRUB2英文文档的部分翻译
    WinForm中Crossthread operation not valid错误的解决方法
    C# 嵌入式资源
    raster配准
    excel vba 玫瑰图 风速 风向
    使用UserControl好处
    How does ArcSDE use Oracle Spatial? arcsde怎么使用oracle spatial
    信息抽取的定义(definition of information extraction)
  • 原文地址:https://www.cnblogs.com/bing521meng/p/5961306.html
Copyright © 2020-2023  润新知