對於一個特別喜歡用console.log來調試代碼的人來講,console.log的一些坑和console.log的詳細用法確實是一件值得深究的事。數組
先記錄一下console.log的一些坑:
1.對於引用對象,好比Array和Object,打印出來的內容多是當前在內存裏的內容,而不是打印的那個時刻的內容
2.對於一個大型項目而言,若是console.log過多,管理滿屏的console.log是一件很恐怖的事,由於你極可能找不到想要的信息debug
針對問題1,若是你仍是要用console.log來debug,那麼這是不可避免的。
解決方法1:改變習慣,之後用斷點的方式調試。
解決方法2:使用JSON.stringify把對象變成字符串打印調試
本文主要針對【問題2】提供了一個解決方案。代碼以下code
let consoleVersion = [1000, 1001]; let emptyFunc = function(){} let _log = function(version){ if(consoleVersion.includes(version)){ return console.log; }else{ return emptyFunc; } }
使用方式對象
log(1000)('顯示1'); log(1001)('顯示2'); log(1002)('不會顯示1'); log(1003)('不會顯示2');
原理是經過consoleVersion數組管理打印的內容,好比今天我須要調試登陸模塊
咱們記錄登陸模塊的console.log的調試內容爲1001,那麼全部的登陸模塊的打印都使用這樣的方式打印內存
log(1001)('登陸模塊調試1'); log(1001)('登陸模塊調試2'); log(1001)('登陸模塊調試3'); log(1001)('登陸模塊調試4'); log(1002)('其餘模塊調試1');
而後設置字符串
consoleVersion = [1001];
這樣只會打印:
登陸模塊調試1
登陸模塊調試2
登陸模塊調試3
登陸模塊調試4string
不會打印其餘內容io