利用Console來調試JS程序、Console用法總結

[原文鏈接] http://blog.163.com/zhangmihuo_2007/blog/static/27011075201452522824347/


目錄:

一、什麼是 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日 - 月上西樓 - 月上西樓

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章