• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Chrome 调试技巧(小结)

    写在前面

    本文包括浏览器调试,不包括web移动端调试。

    本文调试均在chrome浏览器进行

    alert

    这个不用多说了,不言自明

    console基本输出

    想必大家都在用console.log在控制台输出点东西,其实console还有其它的方法:

    console.log("打印字符串");//在控制台打印自定义字符串
    console.error("我是个错误");//在控制台打印自定义错误信息
    console.info("我是个信息");//在控制台打印自定义信息
    console.warn("我是个警告");//在控制台打印自定义警告信息
    console.debug("我是个调试");//在控制台打印自定义调试信息
    cosole.clear();//清空控制台(这个下方截图中没有)

    注意上面输出的error和throw出的error不一样,前者只是输出错误信息,无法捕获,不会冒泡,更不会中止程序运行。

    格式化输出

    除此以外,console还支持自定义样式和类似c语言的printf形式

    console.log("%s年",2016);//%s表示字符串
    console.log("%d年%d月",2016,11);//%d表示整数
    console.log("%f",3.1415926);//%f小数
    console.log("%o",console);//%o表示对象
    
    console.log("%c自定义样式","font-size:30px;color:#00f");
    console.log("%c我是%c自定义样式","font-size:20px;color:green","font-size:10px;color:red");


    DOM输出

    下面几个比较简单的,就不举例子了,简单说一下:

    var ul = document.getElementsByTagName("ul");
    console.dirxml(ul); //树形输出table节点,即table>和它的innerHTML,由于document.getElementsByTagName是动态的,所以这个得到的结果肯定是动态的

    对象输出

    var o = {
     name:"Lily",
     age: 18
    };
    console.dir(obj);//显示对象自有属性和方法

    对于多个对象的集合,你可以这样,输出更清晰:

    var stu = [{name:"Bob",age:13,hobby:"playing"},{name:"Lucy",age:14,hobby:"reading"},{name:"Jane",age:11,hobby:"shopping"}];
    console.log(stu);
    console.table(stu);

    成组输出

    //建立一个参数组
    console.group("start"); //引号里是组名,自己起
    console.log("sub1");
    console.log("sub1");
    console.log("sub1");
    console.groupEnd("end");

    函数计数和跟踪

    function fib(n){ //输出前n个斐波那契数列值
     if(n == 0) return;
     console.count("调用次数");//放在函数里,每当这句代码运行输出所在函数执行次数
     console.trace();//显示函数调用轨迹(访问调用栈)
     var a = arguments[1] || 1;
     var b = arguments[2] || 1;
     console.log("fib=" + a);
     [a, b] = [b, a + b];
     fib(--n, a, b);
    }
    fib(6);


    注:Chrome开发者工具中的Sources标签页也在Watch表达式下面显示调用栈。

    计时

    console.time() //计时开始
    fib(100); //用上述函数计算100个斐波那契数
    console.timeEnd() //计时结束并输出时长


    断言语句,这个c++调试里面也经常用到。js中,当第一个表达式或参数为true时候什么也不发生,为false时终止程序并报错

    console.assert(true, "我错了");
    console.assert(false, "我真的错了");

    性能分析

    function F(){
     var i = 0;
     function f(){
      while(i++ == 1000);
     }
     function g(){
      while(i++ == 100000);
     }
     f();
     g();
    }
    console.profile();
    F();
    console.profileEnd();


    注:Chrome开发者工具中的Audits标签页也可以实现性能分析。

    debugger

    这个重量级的是博主最常用的,可能是c++出身,对于单步调试由衷的热爱。单步调试就是点一下,执行一句程序,并且可以查看当前作用域可见的所有变量和值。而debugger就是告诉程序在那里停下来进行单步调试,俗称断点。

    右边按钮如下:

    其实右侧还有很多强大的功能

    1. Watch:Watch表达式
    2. Call Stack: 栈中变量的调用,这里是递归调用,肯定是在内存栈部分调用。
    3. Scope:当前作用域变量观察。
    4. BreakPoints:当前断点变量观察。
    5. XHR BreakPoints:面向Ajax,专为异步而生的断点调试功能。
    6. DOM BreakPoints:主要包括下列DOM断点,注册方式见下图

    当节点属性发生变化时断点(Break on attributes modifications)

    当节点内部子节点变化时断点(Break on subtree modifications)

    当节点被移除时断点(Break on node removal)

    Global Listeners:全局事件监听

    Event Listener Breakpoints:事件监听器断点,列出了所有页面及脚本事件,包括:鼠标、键盘、动画、定时器、XHR等等。

    chrome中的调试技巧

    1、DOM元素的控制台书签

    Chrome开发者工具和Firebug都提供了书签功能,用于显示你在元素标签页(Chrome)或HTML标签页(Firebug)中最后点击的DOM元素。如果你依次选择了A元素、B元素和C元素,那么dollar;0 表示C元素,dollar;1 表示B元素,dollar;2 表示A元素。(这个和正则表达式的dollar;符号类似,不过顺序不同)

    1.避免记录引用类型

    当记录对象或数组时,永远记得你在记录什么。记录原始类型时,使用带断点的watch表达式。如果是异步代码,避免记录引用类型。

    var arr = [{ num: 0 }];
    setInterval(function(){
    console.log(arr);
    arr[0].num += 1;
    }, 1000);

    这里,第一个属性中对象引用的值是不可靠的。当你第一次在开发者工具中显示这个属性时,num的值就已经确定了。之后无论你对同一个引用重新打开多少次都不会变化。

    2.尽可能使用 source map。有时生产代码不能使用source map,但不管怎样,你都不应该直接对生产代码进行调试。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • 通过chrome浏览器控制台(Console)进行PHP Debug的方法
    • Chrome开发者工具9个调试技巧详解
    • 使用Chrome调试JavaScript的断点设置和调试技巧
    • 详解Chrome 实用调试技巧
    • 利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
    • 基于Python开发chrome插件的方法分析
    • 9种使用Chrome Firefox 自带调试工具调试javascript技巧
    • Chrome浏览器控制台console使用详解
    上一篇:基于HTTP协议的一些实时数据获取技术详解
    下一篇:详解Chrome 实用调试技巧
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Chrome 调试技巧(小结) Chrome,调试,技巧,小结,Chrome,