javascript
利用Console来调试JS程序、Console用法总结
利用Console來調試JS程序、Console用法總結(1)
一 、什么是 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 窗口的方法,支持多個參數,該方法會把 這些參數組合在一起顯示
我們首先來寫一段倒計時的代碼
我們在line:16加入console.log(“當前數值:”+i); 那么在控制臺中將輸出每次i的值:
log 方法第一個參數支持類似 C 語言 printf 字符串替換模式,Log 支持下面幾種替換模式:
- %s 代替字符串
- %d 代替整數
- %f 代替浮點值
- %o 代替 Object
例如,我們輸出一個時間日期:
console.log(“%d年%d月%d日”,2014,6,25);
比如,我們要把月份“6月”變成“06月”,那么可以使用“%s”,在傳入參數的時候要用引號:
console.log(“%d年%s月%d日”,2014,’06’,25);
五、console.debug,info,warn,error
這 4 種方法與 log 方法使用一模一樣,只是顯示的圖標和文字顏色不一樣。
六、console.assert(expression[, object, …])
assert 方法類似于單元測試中的斷言,當 expression 表達式為 false 的時候,輸出后面的信息,e.g:
注:assert 方法在 firebuglite 不支持,Chrome 和 FireBug 支持。
七、console.clear()
該方法清空 console 中的所有信息 (Chrome中不支持)
八、console.dirxml(node)
把 html 元素的html 代碼打印出來,等同于log。
九、console.trace()
trace 方法可以查看當前函數的調用堆棧信息,即當前函數是如何調用的
十、console.group(object[, object, …]), groupCollapsed, groupEnd
這 3 個函數用于把 log 等輸出的信息進行分組,方便閱讀查看。
groupCollapsed 方法與 group 方法一樣,只是顯示的分組默認是折疊的。
注意:如果后面不跟console.groupEnd(),則第二個分組默認是第一個分組的子節點。
十一、console.time(name)/console.timeEnd(name)
我們經常需要測試 js 函數的執行時間,可能我們自己寫代碼在第1 條語句和 最后 1 條語句取當前時間相減。這組函數其實就實現了這樣的功能,time(name)根據 name 創建 1 個新 的計時器。timeEnd(name)停止給定name 的計時器,并顯示時間。
下面給個空的for循環,打印0-1000的i的值,用時124.61ms:
十二、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中的結果,會打印出累積次數:
而在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);
十六、tab鍵代碼補全
此功能只針對fireBug下,在Chrome下自帶代碼提示功能
在fireBug下輸入co再按Tab鍵,將會出現代碼提示:
而在Chrome下邊輸入邊出現代碼提示,很強大。
十五、百度首頁的彩蛋!
打開百度首頁,查看Javascript輸出控制臺,呵呵,你發現了什么?百度的招聘啟事:
利用Console來調試JS程序、Console用法總結(2)
昨天,我發現了一個很棒的JavaScript調試小工具,它是Chrome開發者工具之一。在小型Web開發會議中,Marcus Ross發表了關于在Chrome中實現各種JavaScript調試工具的談話,其中之一就是我想在此展示的console.table()函數。
通過console.log()記錄數組數據
想象一下你已經創建了一個編程語言及其文件擴展名的表:
調用console.log(languages)函數將會使你的數據得到如下顯示:
顯示樹狀結構圖的目的是為了對調試有所幫助,但是我覺得有點麻煩,因為需要手動打開每個折疊的對象。我的意思是,我們可以通過console.table()函數做的更好一點。
通過console.table()記錄數組數據
我們通過調用console.table()來代替console.log()函數的使用:
console.table(languages);
要確保控制臺在刷新頁面之前打開,否則你可能會看不到任何輸出。如果你的一切操作都正確的話,作為回報,你將看到這個漂亮的小表格視圖:
很漂亮是吧?更棒的事情是——可以按照表的每一列來排序:
當然,此表對于表格格式的數據支持的最好。如果所有對象都有著完全不同的數據結構,你的表中將有大多數單元格含有未定義的值。盡管如此,屬性值的整齊排列也會給你一個很棒的總覽效果。
通過console.table()記錄對象數據
關于console.table()的另一個好處是它同樣適用于對象數據:
過濾顯示對象的屬性
如果你想通過某些屬性限制表中的列時,你可以通過傳遞一個鍵值數組作為console.table()調用的第二個參數:
console.table(languages, [“name”]);
對于單個屬性,一個簡單的字符串參數就足夠了:
console.table(languages, “name”);
總結
我以為我知道大多數Chrome開發者工具自帶的功能,但是顯然我錯了。開發者工具中有很多很多有用的功能,只是在等你去使用它。說真的,去看看官方文檔的頁面,沒準你會發現一些你不知道的很棒的功能。
原文:http://blog.163.com/zhangmihuo_2007/blog/static/270110752014526102948837/
總結
以上是生活随笔為你收集整理的利用Console来调试JS程序、Console用法总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我还在坚持的道路上
- 下一篇: Spring MVC Controlle