天天看點

Console指令詳解,讓調試js代碼變得更簡單

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

firebug控制台詳解

作者:阮一峰

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

Console指令詳解,讓調試js代碼變得更簡單

控制台(console)是firebug的第一個面闆,也是最重要的面闆,主要作用是顯示網頁加載過程中産生各類資訊。

一、顯示資訊的指令

firebug内置一個console對象,提供5種方法,用來顯示資訊。

最簡單的方法是console.log(),可以用來取代alert()或document.write()。比如,在網頁腳本中使用console.log("hello world"),加載時控制台就會自動顯示如下内容。

Console指令詳解,讓調試js代碼變得更簡單

另外,根據資訊的不同性質,console對象還有4種顯示資訊的方法,分别是一般資訊console.info()、除錯資訊console.debug()、警告提示console.warn()、錯誤提示console.error()。

比如,在網頁腳本中插入下面四行:

  console.info("這是info");   console.debug("這是debug");   console.warn("這是warn");   console.error("這是error");

加載時,控制台會顯示如下内容。

Console指令詳解,讓調試js代碼變得更簡單

可以看到,不同性質的資訊前面有不同的圖示,并且每條資訊後面都有超級連結,點選後跳轉到網頁源碼的相應行。

二、占位符

console對象的上面5種方法,都可以使用printf風格的占位符。不過,占位符的種類比較少,隻支援字元(%s)、整數(%d或%i)、浮點數(%f)和對象(%o)四種。

比如,

  console.log("%d年%d月%d日",2011,3,26);   console.log("圓周率是%f",3.1415926);
Console指令詳解,讓調試js代碼變得更簡單

%o占位符,可以用來檢視一個對象内部情況。比如,有這樣一個對象:

  var dog = {} ;   dog.name = "大毛" ;   dog.color = "黃色";

然後,對它使用o%占位符。

  console.log("%o",dog);
Console指令詳解,讓調試js代碼變得更簡單

三、分組顯示

如果資訊太多,可以分組顯示,用到的方法是console.group()和console.groupend()。

  console.group("第一組資訊");     console.log("第一組第一條");     console.log("第一組第二條");   console.groupend();   console.group("第二組資訊");     console.log("第二組第一條");     console.log("第二組第二條");
Console指令詳解,讓調試js代碼變得更簡單

點選組标題,該組資訊會折疊或展開。

Console指令詳解,讓調試js代碼變得更簡單

四、console.dir()

console.dir()可以顯示一個對象所有的屬性和方法。

比如,現在為第二節的dog對象,添加一個bark()方法。

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

然後,顯示該對象的内容,

  console.dir(dog);
Console指令詳解,讓調試js代碼變得更簡單

五、console.dirxml()

console.dirxml()用來顯示網頁的某個節點(node)所包含的html/xml代碼。

比如,先擷取一個表格節點,

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

然後,顯示該節點包含的代碼。

  console.dirxml(table);
Console指令詳解,讓調試js代碼變得更簡單

六、console.assert()

console.assert()用來判斷一個表達式或變量是否為真。如果結果為否,則在控制台輸出一條相應資訊,并且抛出一個異常。

比如,下面兩個判斷的結果都為否。

  var result = 0;   console.assert( result );   var year = 2000;   console.assert(year == 2011 );
Console指令詳解,讓調試js代碼變得更簡單

七、console.trace()

console.trace()用來追蹤函數的調用軌迹。

比如,有一個加法器函數。

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

我想知道這個函數是如何被調用的,在其中加入console.trace()方法就可以了。

    console.trace();

假定這個函數的調用代碼如下:

  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指令詳解,讓調試js代碼變得更簡單

八、計時功能

console.time()和console.timeend(),用來顯示代碼的運作時間。

  console.time("計時器一");   for(var i=0;i<1000;i++){     for(var j=0;j<1000;j++){}   console.timeend("計時器一");
Console指令詳解,讓調試js代碼變得更簡單

九、性能分析

性能分析(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){

然後,就可以分析foo()的運作性能了。

繼續閱讀