十個(gè)很少人知道的 JavaScript 控制臺(tái)方法
您肯定聽(tīng)說(shuō)過(guò) console.log() 并且可能一直在使用它。它非常流行,像 Visual Studio Intellicode 這樣的工具通常會(huì)在 IDE 中輸入時(shí)在任何其他控制臺(tái)方法之前推薦它:
在今天這篇文章中,我們將探討一些最有用的控制臺(tái)方法及其在數(shù)據(jù)可視化、調(diào)試等方面的用途。
1.table()
當(dāng)您需要直觀地查看代碼中可以以表格形式表示的一組對(duì)象(如對(duì)象數(shù)組)時(shí),console.table() 方法會(huì)派上用場(chǎng)。以這個(gè)汽車(chē)清單為例:
您將如何在控制臺(tái)中檢查它們?console.log() 是一個(gè)典型的方法:
在 Chrome 開(kāi)發(fā)人員控制臺(tái)中,我們可以檢查我們記錄的對(duì)象的各種屬性,以及我們想要的任意多的層次結(jié)構(gòu)。
我們可以在 Node.js 終端中查看屬性并進(jìn)行著色:
這是一種可接受的方法,但 console.table() 方法提供了一種更優(yōu)雅的替代方法:
顧名思義,它以易于理解的表格格式呈現(xiàn)數(shù)據(jù),如電子表格。
table() 也適用于數(shù)組數(shù)組:
2. assert()
非常適合調(diào)試目的,console.assert() 接受斷言并在斷言為假時(shí)將錯(cuò)誤消息寫(xiě)入控制臺(tái)。但如果這是true,什么也不會(huì)發(fā)生。
第一個(gè)斷言通過(guò),因?yàn)?num 大于 10,所以控制臺(tái)中只顯示第二個(gè):
3. trace()
console.trace() 幫助您在調(diào)用它的位置輸出當(dāng)前堆棧跟蹤。例如:
4.error()
error() 可能是第二流行的控制臺(tái)方法。在 Chrome 控制臺(tái)中,它以獨(dú)特的紅色顯示錯(cuò)誤消息。
你不會(huì)在 Node.js 中獲得這種顏色分離:
但是,消息在內(nèi)部寫(xiě)入不同的位置。console.error() 寫(xiě)入 stderr 流,而 console.log() 寫(xiě)入 stdout 流。您可以使用 process.stderr 和 process.stdout 訪問(wèn)這些流。這對(duì)于將錯(cuò)誤消息和信息性消息重定向到不同的文件很有用,就像我們?cè)谙旅娴拇a示例中所做的那樣。
運(yùn)行此代碼時(shí),傳遞給 error() 和 log() 的消息將輸出到相應(yīng)的文件,而不是控制臺(tái)。
5.warn()
console.warn() 在 Chrome 控制臺(tái)中輸出一條黃色消息,表示警告。
在 Node.js 中,消息被寫(xiě)入 stderr 流,如 console.error()。
6. count() 和 countReset()
console.count() 記錄當(dāng)前調(diào)用 count() 的次數(shù)。另一個(gè)有用的調(diào)試工具。
顯示的標(biāo)簽是默認(rèn)的,因?yàn)槲覀儧](méi)有指定標(biāo)簽。我們可以通過(guò)將字符串參數(shù)傳遞給 count() 來(lái)做到這一點(diǎn)。
現(xiàn)在我們對(duì)每條消息都有不同的計(jì)數(shù)。
countReset() 方法將標(biāo)簽的計(jì)數(shù)設(shè)置回零。
7. time()、timeEnd() 和 timeLog()
我們可以一起使用這些方法來(lái)測(cè)量我們程序中的特定操作需要多長(zhǎng)時(shí)間。
這里我們對(duì) for of 和 forEach 循環(huán)進(jìn)行性能比較。time() 為傳遞給它的標(biāo)簽指定的操作啟動(dòng)計(jì)時(shí)器。timeLog() 在不停止計(jì)時(shí)器的情況下記錄當(dāng)前持續(xù)時(shí)間,我們用它來(lái)顯示一千次迭代后經(jīng)過(guò)的時(shí)間。timeEnd() 記錄當(dāng)前持續(xù)時(shí)間并停止計(jì)時(shí)器。我們?cè)诮?jīng)過(guò)一百萬(wàn)次迭代后調(diào)用它。
看起來(lái) forEach() 比 for of 快。
8.clear()
console.clear() 通過(guò)清除日志來(lái)消除控制臺(tái)的混亂。
9. group()、groupCollapsed() 和 groupEnd()
console.group() 向其后的任何控制臺(tái)消息添加一定程度的縮進(jìn)。console.groupEnd() 將縮進(jìn)重置為調(diào)用前面的 console.group() 之前的級(jí)別。
console.groupCollapsed() 創(chuàng)建一個(gè)類(lèi)似于 console.group() 的組,但是該組會(huì)折疊,直到用戶(hù)使用旁邊的顯示按鈕展開(kāi)它。
10.dir()
console.dir() 的工作方式類(lèi)似于 console.log(),除了記錄 HTMLElements。console.log() 將 HTMLElement 記錄為我們可以在控制臺(tái)中遍歷的 HTML:
但是 console.dir() 會(huì)將其記錄為一個(gè)對(duì)象,顯示一個(gè)交互式屬性列表:
結(jié)論
正如您在本文中看到的,除了 console.log() 之外,還有許多控制臺(tái)方法。其中一些只是在控制臺(tái) UI 中使用顏色和更好的可視化來(lái)增添趣味,而另一些則可以作為調(diào)試和性能測(cè)試的強(qiáng)大工具。
今天內(nèi)容就先分享到這里,希望對(duì)你有用,感謝閱讀。