JavaScript調試技巧之console.log()詳解


JavaScript調試技巧之console.log()詳解

對於JavaScript程序的調試,相比於alert(),使用console.log()是一種更好的方式,原因在於:alert()函數會阻斷JavaScript程序的執行,從而造成副作用;
alert彈出框需要點擊確認比較麻煩,而console.log()僅在控制台中打印相關信息,因此不會造成類似的顧慮。
最重要的是alert只能輸出字符串,不能輸出對象里面的結構,console.log()console.log()可以接受任何字符串、數字和JavaScript對象,可以看到清楚的對象屬性結構,在ajax返回json數組對象時調試很方便。

//兼容Firefox/IE/Opera使用console.log
if(!window.console){
window.console = {log : function(){}};
}
window.console = window.console || {};
console.log || (console.log = opera.postError);

 

下面分享兩張打印出來的信息圖片:

php上傳多文件console.log打印日志

console.log 原先是 Firefox 的"專利",嚴格說是安裝了 Firebugs 之后的 Firefox 所獨有的調試"絕招"。

IE8用起來比 Firebugs 麻煩,只有在開啟調試窗口(F12)的時候,console.log 才能出結果,不然就報錯。
IE瀏覽器下默認是不支持console.log,反而會因為這句代碼報錯,解決辦法是聲明該console對象的log函數為空函數
if(!window.console){
window.console = {log : function(){}};
}

Opera還是不能用 console.log 加上下面兩句代碼兼容:
window.console = window.console || {};
console.log || (console.log = opera.postError);
這樣Firefox/IE/Opera 都能用上console.log,不過沒有必要去做這種兼容性工作 console.log()等調試代碼應當從最終的產品代碼中刪除掉。

IE 和 Opera 下的 console.log 比起 Firebugs還是太過簡單,比如參數是 Object 或者數組就沒有進一步的顯示功能。

//變量
var i = 'I am a string';
console.log('變量:',i);
//數組
var arr = [1,2,3,4,5];
console.log('數組:',arr);
//對象
var obj1 = {
key1 : 'value1',
key2 : 'value2',
key3 : 'value3'
};
var obj2 = {
key6 : 'value4',
key5 : 'value5',
key4 : 'value6'
};
var obj3 = {
key9 : 'value7',
key8 : 'value8',
key7 : 'value9'
};
console.log('對象:',obj1);
//對象數組
var objArr1 = [obj1,obj2,obj3];
var objArr2 = [[obj1],[obj2],[obj3]];
console.log('對象數組1:',objArr1);
console.log('對象數組1:',objArr2);
/*
輸出:
變量:I am a string
數組:[1, 2, 3, 4, 5]
對象:Object { key1="value1", key2="value2", key3="value3"}
對象數組1:[Object { key1="value1", key2="value2", key3="value3"}, Object { key6="value4", key5="value5", key4="value6"}, Object { key9="value7", key8="value8", key7="value9"}]
對象數組1:[[Object { key1="value1", key2="value2", key3="value3"}], [Object { key6="value4", key5="value5", key4="value6"}], [Object { key9="value7", key8="value8", key7="value9"}]]
*/

除了console.log(),Firebug還支持多種不同的日志級別:debug、info、warn、error。以下代碼將在控制台中打印這些不同日志級別的信息:
代碼如下://Use different logging level
console.log("Log level");
console.debug("Debug level");
console.info("Info level");
console.warn("Warn level");
console.error("Error level");
從Firebug控制台中可以看到,不同日志級別的打印信息,其顏色和圖標是不一樣的;同時,可以在控制台中選擇不同的日志級別來對這些信息進行過濾,不過這些比較少用到,不是很實用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM