說到j(luò)avascript的調(diào)試,小伙伴們想到的第一個(gè)方法肯定是使用 console.log() 在控制臺打印出調(diào)試信息和日志
console對象幾乎已經(jīng)深入了每一個(gè)前端小伙伴的職業(yè)生涯伊佃,可能你只用過 console.log() 铸题,或者也用過 console.info() 土浸、console.warn() 和 console.error()
在你成千上萬次使用 console.log() 方法時(shí)答姥,有沒有深入了解過console這個(gè)對象的其他方法呢?
沒有粘勒?那就繼續(xù)往下看吧
console對象到底有多少方法揭糕?
在你的瀏覽器里調(diào)出控制臺萝快,輸入 console 按下回車,你就會發(fā)現(xiàn)著角,原來 console 對象并不只有 log/info/warn/error 這三個(gè)方法揪漩,它的方法眾多,而這些方法能夠使我們的調(diào)試之路走得更為順暢
下面就來說幾個(gè)console對象里我們不常用的開發(fā)調(diào)試好幫手
assert()
console 斷言方法雇寇,該方法接受的第一個(gè)參數(shù)為布爾值表達(dá)式氢拥,之后的參數(shù)為打印的內(nèi)容
當(dāng)表達(dá)式為真時(shí),assert 不會打印任何內(nèi)容锨侯,當(dāng)為假時(shí)則會將之后的參數(shù)依次打印
var a = 1;
console.assert(a>1, 'console斷言方法','a小于1')
//Assertion failed: console斷言方法 a小于1
clear()
清空控制臺方法嫩海,不接受任何參數(shù)
count()
打印該方法已經(jīng)調(diào)用的次數(shù),可傳入一個(gè)參數(shù)作為標(biāo)識符 (label) 囚痴,傳入標(biāo)識符的情況下將打印被標(biāo)記為該標(biāo)識符的 count() 調(diào)用次數(shù)
console.count(); // : 1
console.count(); // : 2
console.count('label1'); // label1: 1
console.count('label1'); // label1: 2
console.count('label1'); // label1: 3
console.count('label2'); // label2: 1
console.count('label2'); // label2: 2
console.count('label2'); // label2: 3
console.count('label2'); // label2: 4
group()
打印分組方法叁怪,傳入一個(gè)參數(shù)為組名
當(dāng)我們使用很多的 log 方法來打印信息時(shí),控制臺上將會同時(shí)顯示很多的打印內(nèi)容深滚,這樣不利于我們來區(qū)分哪個(gè)或那幾個(gè)輸出是同一類的奕谭,雖然可以再內(nèi)一個(gè)輸出前做上打印內(nèi)容的提示,但是內(nèi)容過多時(shí)非常不利于瀏覽
于是 group() 方法橫空而降痴荐,通過它可以將打印內(nèi)容進(jìn)行分組血柳,同時(shí)傳入的組名也能夠在控制臺上打印出來,更便于我們的調(diào)試
需要注意的是生兆,group() 總是和 groupEnd() 方法一起使用难捌,只有處于這兩個(gè)方法之間的打印內(nèi)容才會被標(biāo)記為同一組
console.group('group1');
console.log('group1 log');
console.warn('group1 warn');
console.error('group1 error');
console.groupEnd();
console.group('group2');
console.log('group2 log');
console.warn('group2 warn');
console.error('group2 error');
console.groupEnd();
打印內(nèi)容如下圖:
time()
統(tǒng)計(jì)并打印一段代碼的執(zhí)行時(shí)間,傳入一個(gè)參數(shù)為標(biāo)識符 (label)
與 group 方法類似鸦难,需要與 timeEnd 方法連用根吁,但是 timeEnd 方法需要傳入配對的 time 方法相同的標(biāo)識符
該方法將會統(tǒng)計(jì)位于它們中間的一段代碼的執(zhí)行時(shí)間并打印
console.time('loop');
for (var i = 0; i < 100000; i ++) {}
console.timeEnd('loop'); // loop: 2.265ms
tabel()
將一個(gè)數(shù)組/對象以表格的形式打印出來,傳入的參數(shù)為數(shù)組/對象
在控制臺使用 log 方法打印過對象的小伙伴應(yīng)該知道合蔽,如果被打印對象屬性少的還好击敌,如果屬性多的同時(shí)又嵌套了很多其他對象作為屬性,那打印出來的效果簡直就像…吃了shit一樣惡心拴事。但是使用 tabel 方法來打印就好看多了沃斤,整齊劃一的表格簡直就是賞心悅目
var arr = [
{name: 'xiaoming', age: 17},
{name: 'xiaohong', age: 18},
{name: 'xiaogang', age: 19}
];
console.table(arr);
打印效果如下圖:
以上列出的console對象方法是大多數(shù)主流瀏覽器都能夠?qū)崿F(xiàn)的方法圣蝎,其他一些方法例如 dir/diexml/profile/trace 等,可能只在部分瀏覽器中能夠給我們的開發(fā)效率和體驗(yàn)帶來提升轰枝,如果小伙伴們對這些方法感興趣的話捅彻,可以自己去親自實(shí)踐一下,發(fā)現(xiàn)它們的用處哦鞍陨!