亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

從console.log說起(console.log詳細介紹)

2024-07-21 02:02:57
字體:
來源:轉載
供稿:網友

控制臺美女

console.log,作為一個前端開發者,可能每天都會用它來分析調試,但這個簡單函數背后不簡單那一面,你未必知道……

基礎

首先,簡單科普這個函數的作用。前端開發者可以在js代碼的任何部分調用console.log,然后你就可以在瀏覽器的開發者控制臺里,看到這個函數調用的那一瞬間你指定的變量或表達式的值。

最基本的調用方法:

console.log('123');// 123 console.log('1', '2', '3');// 1 2 3 console.log('1/n2/n3/n');// 1// 2// 3

我們可以通過上面的方式進行單個變量(表達式)、多個變量以及換行輸出。而這對于日常開發的大多數情況算是夠用了。

格式化輸出

console.log('%d + %d = %d', 1, 1, 2);// 1 + 1 = 2

寫過C語言的童鞋肯定對上面這種寫法不陌生,這種寫法在復雜的輸出時,能保證模板和數據分離,結構更加清晰。不過簡單的輸出就不那么方便了。

console.log支持的格式標志有:

格式化

前三種格式不用多說,%o、%O都是用來輸出Object對象的,對普通的Object對象,兩者沒區別,但是打印dom節點時就不一樣了:
%o和%O

使用%o輸出和不使用格式化輸出打印出來的結果一樣,你可以查看這個dom節點的內容、子節點等;而使用%O,你看到的則是該dom節點各個對象屬性。對應我們平時把數據寄放到dom節點的兩種方式:

BTW,格式化輸出還可以和普通輸出混合著來:

console.log('%d + %d =', 1, 1, 2);// 1 + 1 = 2

豐富樣式輸出

大家等待已久的高潮來了,鼓掌,再看下妹子:
控制臺美女2

這是怎么做到的呢?其實看了上一節肯定有童鞋猜到了,那就是用%c進行css樣式格式化輸出。常見的富樣式輸出有兩種:文字樣式、圖片輸出。

文字樣式

QQ20131111-10@2x

很簡單對吧?這是最簡單的寫法,其實%c可以寫在任何地方,不限于開頭,然后%c后面所有的輸出會應用我們指定的樣式。

那如果我想單獨對我輸出的一句話中間某幾個字進行樣式處理呢?一般來說,沒辦法,不過有變通的手段:

替代方案

附:console.log輸出的超鏈接會被自動識別并加上灰色字體顏色和下劃線的樣式,而這個無法用%c覆蓋

圖片輸出

圖片輸出

嚴格來講,console.log不支持直接圖片輸出,但我們可以用背景圖曲線救國。但,你真正去試了才發現沒那么簡單,你沒法像平時那樣輸出背景圖,原因呢,就是你沒法直接設置widthheight樣式。

就好像上面的示例,要輸出一張438×166的圖片,我用padding來把整個區域撐開到我要的大小,然后還要設置line-height才行。關于這些屬性的值大家估計會困惑,我一一說明:

line-height的值我取圖片高度background就不需多說,但你會發現no-repeat設置了沒生效。。。padding左右兩邊的值顯然是圖片寬度的一半最頭痛的是padding上下的值,我試過高度一半的值,結果輸出的大小比我想象的高!所以建議:用我這種方法輸出,padding上下的值你要一點點的調整直到達到你要的輸出

之所以強調我的方法,是因為還有其他方法可以控制背景圖輸出。有興趣的童鞋還可以參考一個叫 console.image 的插件:
console.image

關于富樣式輸出說了這么多,現在不得不提下瀏覽器兼容性:

瀏覽器支持

個人感覺,控制臺富樣式輸出雖然最后輸出看到起來很上流,但開發者會寫得很糾結,畢竟沒法控制dom節點應用正常的css樣式。其中圖片輸出真是一個非(sang)常(xin)強(bing)大(kuang)的功能。

那些兄妹

console的兄妹

這些都可以做調試輸出,區別是:

樣式不同我們可以通過調試器底部篩選出不同的輸出項

所以跟網站重構要求html語義化類似,當我們的調試輸出比較多時,根據實際場景使用不同類型的輸出函數能使我們的輸出更有條理。

值得一提的是console.error,我們使用它做輸出除了可以輸出錯誤信息外,還可以輸出調用這個函數的一瞬間的調用棧!這無疑給我們調試帶來很多方便(當然你也可以用js斷點一步步跟蹤),而這是console.log所不具備的。除了console.error,還有一個函數console.trace也可以打印出調用一瞬間的調用棧,不過它的輸出樣式和位置就跟console.log一樣了:
QQ20131111-14@2x QQ20131111-15@2x

其實這一系還有函數(丫的搞這么多類似的):

// 等價console.log('%o', document.body);console.log(document.body);// 等價console.log('%O', document.body);console.dir(document.body);

它們才是失散多年的兄妹嗎。。

鄰居們

其實除了打印調試信息外,console還有不少強大有用但卻很低調的接口。

console.time & console.timeEnd

這是性能調試的利器啊,熟悉NodeJs的童鞋更是清楚。肯定不少童鞋干過這事:在我們的某塊代碼前新增一個類似startTime的變量,給它一個時間戳,然后在我們執行完代碼后,再打一個時間戳,再將兩者相減,再將結果輸出?,F在我們使用上面的函數,就可以省下很多功夫了:
QQ20131111-16@2x

上面是我寫的一個懶加載判斷圖片是否在可視區域內,可以看出調用10000次花費時間為160ms左右,使用這兩個接口是何其方便!而且我們還可以將一個字符串作為函數參數,來區分不同的性能計時。

console.count

這是一個計數器,我們可以傳個名字給它,如a,然后每次調用console.count('a')(可以在不同函數不同地方),它就能打印出這樣一個調用執行了多少次:
QQ20131111-17@2x

這個函數特別適用于在一些復雜的場景,有時一個函數被多個地方調用到,而我們想知道該函數是否少調用或重復調用,此時使用計數器比js斷點自己還要默記調了幾次快多了。

console.assert

assert,搞編程的應該對這個單詞不陌生:斷言。使用console.assert,你可以理解為于禁的技能(三國殺玩多了這孩子),你猜錯了這個表達式的真假,那我就可以打出我的信息:
QQ20131111-18@2x

不消說,使用該函數可以讓我們在某些地方只在符合某個條件才進行調試輸出,使輸出更加干凈。當然你也可以用if語句,不過寫起來就麻煩了一些。

console.group

一看就知道是分組輸出:
QQ20131111-19@2x

而且這個分組還可以嵌套的:
QQ20131111-20@2x

顯然這個函數特別適合有一大堆調試輸出的情況,做大項目估計會用上。不過有時你打開控制臺看到滿屏滿屏的輸出你也會很頭痛的,于是你可以分組輸出且默認收起:
QQ20131111-21@2x

console.clear

最后的最后,該清場了。

特別適用于,在一個多人開發項目,你不爽別人的調試輸出,那你可以用這個函數統統清掉,再輸出自己的調試信息,不用跟這個函數客氣。

總結

我是王大錘,萬萬沒想到,console.log的八卦就這樣被我說完了,本以為還可以吹水個幾萬字。

這是【那些不為人知的接口系列】的第一篇,瀏覽器其實提供了很多有用的接口給我們,我們要不不知道,要不知道了感覺用不上,該系列試圖將它們一一挖掘出來并給出適用場景建議,敬請期待。

附conssole.timestamp & console.profile這兩個函數對應chrome調試面板的兩個tab,調試性能時可用上,有興趣的童鞋可以看看:Google開發者文檔之console

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产精品专区| 成人在线观看视频网站| 亚洲第一网站免费视频| 日韩av综合网| 亚洲人成在线观看| 日韩欧美精品免费在线| 国产v综合ⅴ日韩v欧美大片| 亚洲成人精品久久| 久久久久久久久久国产精品| 国产精品1234| 91大神福利视频在线| 亚洲最大成人网色| 日韩av在线电影网| 55夜色66夜色国产精品视频| 欧美日韩一区二区在线| 日韩精品电影网| 久久精品视频免费播放| 亚洲国产日韩欧美综合久久| 久久精品成人欧美大片古装| 最新69国产成人精品视频免费| 亚洲色图校园春色| 欧美大尺度在线观看| 日韩av大片免费看| 欧美影院在线播放| 欧美日韩中文字幕综合视频| 精品国产一区二区三区久久| 国产aⅴ夜夜欢一区二区三区| 中文字幕日韩综合av| 北条麻妃一区二区在线观看| 懂色aⅴ精品一区二区三区蜜月| 国产精品久久国产精品99gif| 欧美性在线观看| 91精品国产91久久久久久吃药| 久久国产精彩视频| 青青草国产精品一区二区| 最近2019中文免费高清视频观看www99| 日韩电影中文字幕av| 日韩在线中文字| 欧美激情第6页| 国产97在线|日韩| 国产成人精品免费久久久久| 一区二区三区视频免费在线观看| 亚洲一区二区三区在线免费观看| 一二美女精品欧洲| 在线不卡国产精品| 高清欧美性猛交xxxx黑人猛交| 91热福利电影| 欧美中文字幕在线视频| 亚洲天堂精品在线| 欧美小视频在线| 久久99久久亚洲国产| 国产视频久久久久| 日韩av网站电影| 国产欧美一区二区白浆黑人| 97在线视频国产| 7m精品福利视频导航| 欧美日韩国产黄| 亚洲欧美国内爽妇网| 成人免费网站在线看| 国内偷自视频区视频综合| 在线成人中文字幕| 亚洲视频在线播放| 亚洲aa中文字幕| 亚洲美女动态图120秒| 日韩精品一区二区视频| 成人中文字幕在线观看| 欧美xxxx14xxxxx性爽| 久久影视免费观看| 日韩中文视频免费在线观看| 成人国产精品久久久久久亚洲| 国产午夜精品视频免费不卡69堂| 国产精品久久久久久久久| 麻豆国产精品va在线观看不卡| 亚洲毛片在线看| 宅男66日本亚洲欧美视频| 日韩电影中文字幕在线| 高清在线视频日韩欧美| 久久综合九色九九| 国产成人精品久久亚洲高清不卡| 美女撒尿一区二区三区| 亚洲成人999| 黑丝美女久久久| 亚洲国产欧美一区| 欧美日韩成人网| 久久精品夜夜夜夜夜久久| 欧美午夜无遮挡| 日本精品免费一区二区三区| 狠狠色狠狠色综合日日五| 欧美激情精品久久久久久| 成年无码av片在线| 亚洲第一区在线| 国产一区二区三区高清在线观看| 亚洲欧美日本精品| 国产成人一区二区在线| 亚洲变态欧美另类捆绑| 欧美亚洲成人精品| 欧美性少妇18aaaa视频| 国产亚洲在线播放| 亚洲午夜精品久久久久久久久久久久| 日韩大片免费观看视频播放| 不卡av电影在线观看| 久久久久久有精品国产| 色哟哟亚洲精品一区二区| 色综合久久88色综合天天看泰| 国内成人精品视频| 国产精品美女呻吟| 国产精品高潮呻吟久久av野狼| 免费91麻豆精品国产自产在线观看| 中文字幕日韩精品有码视频| 国产精品视频一区二区高潮| 亚洲欧美日韩图片| 国产午夜精品全部视频在线播放| 超碰日本道色综合久久综合| 亚洲成人中文字幕| 尤物yw午夜国产精品视频| 国产一区二区三区丝袜| 欧美巨大黑人极品精男| 国产91精品久久久| 操91在线视频| 成人网在线免费观看| 狠狠干狠狠久久| 91av在线免费观看| 成人午夜两性视频| 国产精品色悠悠| 777午夜精品福利在线观看| 激情久久av一区av二区av三区| 国产乱人伦真实精品视频| 亚洲男人天堂网| 久久久久免费视频| 性色av香蕉一区二区| 国产亚洲精品久久| 一区二区成人精品| 国内精品久久久| 精品一区精品二区| 欧美大全免费观看电视剧大泉洋| 日韩小视频在线观看| 亚洲精品美女视频| 在线视频免费一区二区| 欧美极度另类性三渗透| 久久久久久久久久久av| 精品成人在线视频| 精品久久久视频| 福利视频第一区| 成人免费网站在线看| 久久久久久久久爱| 久久天堂av综合合色| 国产热re99久久6国产精品| 日韩美女福利视频| 大桥未久av一区二区三区| 91亚洲精品在线| 欧美日韩另类视频| 91精品国产色综合久久不卡98| 97免费视频在线播放| 日本人成精品视频在线| 国产女精品视频网站免费| 日韩精品极品毛片系列视频| 亚洲国产精品一区二区久| 欧美极品少妇与黑人| 国外日韩电影在线观看| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品久久精品| 亚洲精品福利在线| 成人免费视频在线观看超级碰| 日韩中文字幕av|