你不知道的前端console用法分享
console
對于前端人員來講肯定都不陌生,相信大部分開發(fā)者都會使用console
來進(jìn)行調(diào)試,但它能做的絕不僅限于調(diào)試。
最常見的控制臺方法
作為開發(fā)者,最常用的 console
方法如下:
控制臺打印結(jié)果:
今天我分享的是一些 console
的高級用法。
首先,看一下 console
提供了哪些方法,在控制臺打印一下:
在 Chrome 123 版本,可以看到有 25 個方法。這篇文章將介紹一部分比較實用的方法,了解專業(yè)的前端都怎么運用 console
的。
打印時間
console.time()
– 使用輸入?yún)?shù)的名稱啟動計時器。在給定頁面上最多可以同時運行 10,000 個計時器。console.timeEnd()
– 停止指定的計時器并記錄自啟動以來經(jīng)過的時間(以毫秒為單位)。
常見的一種場景是計算程序執(zhí)行時間,以跟蹤操作所需的時間。這便可以通過使用console.time()
啟動計時器并傳入標(biāo)簽,然后通過相同的標(biāo)簽使用console.timeEnd()
結(jié)束計時器來實現(xiàn)。甚至還可以使用console.timeLog()
在長時間運行的操作中添加標(biāo)記。
// 定義一個函數(shù),模擬一個耗時的計算過程 function calculateSomething() { let sum = 0; for (let i = 0; i < 1000000000; i++) { sum += i; } return sum; } // 使用 console.time() 開始計時,并給計時器命名 console.time('Calculation Time'); // 執(zhí)行耗時的函數(shù) const result = calculateSomething(); // 使用 console.timeEnd() 結(jié)束計時,并打印經(jīng)過的時間 console.timeEnd('Calculation Time'); // 如果在計算過程中想要添加額外的標(biāo)記點,可以使用 console.timeLog() console.time('Calculation Time'); console.log('中間點輸出'); // 假設(shè)在某個中間點輸出日志 console.timeLog('Calculation Time', '中間點標(biāo)記'); // 添加標(biāo)記 // 再次執(zhí)行耗時的計算 calculateSomething(); console.timeEnd('Calculation Time'); // 結(jié)束計時
性能分析
我們已經(jīng)知道通過 console.time()
和 console.timeEnd()
我們可以了解一段代碼的運行時間。
但是,如果我們需要分析較為復(fù)雜的 JavaScript 邏輯代碼,想要從中找出程序運行的性能瓶頸,假如繼續(xù)使用 console.time()
方法,意味著我們需要大量的插入該方法,這顯然是笨拙的,不推薦大家這么搞。
相對于復(fù)雜邏輯的 JavaScript 程序調(diào)優(yōu),此時 console.profile()
和 console.profileEnd()
便派上用場了。通過新建一個性能分析器(基于cpu的使用情況),使之成為函數(shù)性能分析的利器。
用法和 console.time()
的一樣,console.profile()
開始,console.profileEnd()
結(jié)束,需要傳遞一個參數(shù)作為標(biāo)簽使用,通俗來說,就是為這個性能分析器起個名字??聪氯缦麓a,我們測試幾種不同for循環(huán)書寫方式的耗時情況:
// 簡單新建一個數(shù)組吧,新建一個一百萬個成員為1的數(shù)組 let arr = new Array(1000000).fill(1); // 第一種for循環(huán)書寫方式 function forFun1 () { for (let i = 0, len = arr.length; i < len; i++) {} } // 第二種for循環(huán)書寫方式 function forFun2 () { for (let i = arr.length; i --; ) {} forFun1(); } // 第三種for循環(huán)書寫方式 function forFun3 () { for (let i = 0, item; item = arr[i++]; ) {} } // 執(zhí)行三個函數(shù) function fun () { forFun1(); forFun2(); forFun3(); } // 立即開始一個性能分析器 console.profile('測試for循環(huán)'); fun(); // console.profileEnd('測試for循環(huán)');
打開控制臺運行如上程序:
嗯,打印了兩句話,性能分析器開啟和結(jié)束。這就完了??
在哪兒查看性能分析結(jié)果呢?別急,繼續(xù)往下看
在控制臺可以找到這個 javaScript性能分析器,英文 javaScript Profiler
, 如果你在自己瀏覽器找不到, 可能是你沒有啟動這個試驗性功能。
在設(shè)置中找到實驗, 然后開啟即可。
打印計次
console.count()
是一個在瀏覽器控制臺中用于計數(shù)的 API,它允許開發(fā)者在調(diào)試過程中跟蹤函數(shù)調(diào)用的次數(shù)或某些特定代碼塊的執(zhí)行次數(shù)。
例如, 在React開發(fā)中, 想要跟蹤一個子組件被渲染的次數(shù):
class MyComponent extends React.Component { render() { console.count('MyComponent 渲染次數(shù)'); return ( <div>這是一個組件</div> ); } }
在這個例子中,每次 MyComponent
組件渲染時,控制臺都會顯示渲染次數(shù)的計數(shù)器。
堆棧跟蹤
console.trace()
是一個非常有用的瀏覽器控制臺方法,它可以在代碼的特定位置插入一個跟蹤點,然后輸出一個堆棧跟蹤,顯示調(diào)用堆棧的每一層。這對于調(diào)試復(fù)雜的函數(shù)調(diào)用和理解代碼執(zhí)行流程非常有用。
舉個例子,在React性能優(yōu)化中,console.trace()
可以用來追蹤性能瓶頸的來源。通過在關(guān)鍵的渲染或更新方法中插入跟蹤點,可以了解哪些操作占用了大量時間。
class PerformanceComponent extends React.Component { shouldComponentUpdate(nextProps, nextState) { console.trace('shouldComponentUpdate 跟蹤'); return nextProps.data !== this.props.data; } componentDidUpdate(prevProps, prevState) { console.trace('componentDidUpdate 跟蹤'); // 執(zhí)行更新后的操作 } render() { const { data } = this.props; return ( <div>數(shù)據(jù): {data}</div> ); } }
打印表格
console.table()
方法將對象/數(shù)組打印為格式整齊的表格,還是以上面dog
對象為例:
分組打印
當(dāng)存在很多輸出信息時,你可能想對它們進(jìn)行組織。一個小而有用的工具是 console.group()
和console.groupEnd()
。所有在console.group
和console.groupEnd
之間的console
調(diào)用都會被分組在一起。調(diào)用groupEnd()
減少一個級別(回到上一個層級)。
console.group('Console'); console.log('warin', "警告"); console.log('error', "錯誤"); console.log('info', "提示"); console.groupCollapsed('Log'); console.log('%c 自定義樣式', "color:red"); console.log('%O', {a:1}); console.log('%d', 12.1); console.groupEnd(); console.groupEnd();
console.log() 進(jìn)階
console.log()
除了上面說的基本用法,還支持下面這些輸出方式。
自定義CSS樣式輸出
console.log(`歲月神偷,歌手:%c 金玟岐 `, 'color: #fff;font-size:24px; background:#045133')
支持占位修飾符 %c
來自定義樣式。
格式化輸出內(nèi)容
輸出格式化的字符串,除了使用占位符 %c
來定義 css樣式, 還支持以下幾種占位符:
占位符 | 描述 |
---|---|
%s | 字符串 |
%d / %i | 整數(shù) |
%f | 浮點數(shù) |
%o / /%O | object對象 |
const dog = { name:"阿黃", age: 1.5, friends: 12 } console.log('名字: %s, 年齡: %f, 好友:%d ',dog.name, dog.age, dog.friends) // 輸出:名字: 阿黃, 年齡: 1.5, 好友數(shù):12
%o
/ /%O
雖然都指對象,但%o
表示DOM對象:
%O
則表示javaScript對象, 我們可以打印一下上面的dog
對象:
大家可能覺得,我直接簡單的console.log(xxx)
輸出就行,為什么還要了解這些占位符?
占位符這種寫法在復(fù)雜的輸出時,能保證模板和數(shù)據(jù)分離,結(jié)構(gòu)更加清晰。
總結(jié)
到此這篇關(guān)于前端console用法的文章就介紹到這了,更多相關(guān)前端console用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript中檢測數(shù)組的3種方法小結(jié)
數(shù)組檢測是指在編程中對數(shù)組進(jìn)行驗證和檢查的過程,本文主要介紹了JavaScript中檢測數(shù)組的3種方法小結(jié),具有一定的參考價值,感興趣的可以了解一下2023-08-08layui點擊數(shù)據(jù)表格添加或刪除一行的例子
今天小編就為大家分享一篇layui點擊數(shù)據(jù)表格添加或刪除一行的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09javascript FormatNumber函數(shù)實現(xiàn)方法
如果有一個數(shù)字498.8573945,如何把它格式化成兩位小數(shù)據(jù)呢?用過asp的都知道,在vbscript里我們可以調(diào)用formatnumber,即用formatnumber(498.8573945,2)就可以輸出:498.86。2008-12-12網(wǎng)站內(nèi)容禁止復(fù)制和粘貼、另存為的js代碼
這篇文章主要介紹了JS如何實現(xiàn)網(wǎng)站內(nèi)容如何實現(xiàn)禁止復(fù)制和粘貼、另存為,需要的朋友可以參考下2014-02-02