Console的用法疮丛,以及Debug技巧

Console的用法,以及Debug技巧

目錄

1.背景介紹

2.知識剖析

3.常見問題

4.解決方案

5.編碼實戰(zhàn)

6.擴展思考

7.參考文獻

8.更多討論

一.背景介紹

什么是console灰追?

Chrome 中 Console 是用于顯示 JS和 DOM 對象信息的單獨窗口递览。并且向 JS 中注入1個 console 對象,使用該對象 可以輸出信息到

? ? ? ? ? ? ? ? Console 窗口中疯溺。在具備調(diào)試功能的瀏覽器上论颅,window 對象中會注冊一個名為 console 的成員變量哎垦,指代調(diào)試工具中的控制臺,console 有很多方法恃疯,比如我們最常用的log()

二.知識剖析

常用console方法

1. console.log( )

普通輸出方法漏设,參數(shù)可以為任何對象。

常量? ? ? ? ? ? console.log("常量");

? ? ? ? 變量? ? ? ? ? ? console.log(name);

? ? ? ? 表達式? ? ? ? ? console.log("名字:" + name);

? ? ? ? 方法? ? ? ? ? ? console.log(document.getElementsByTagName("code"));


2. console.table()

可將傳入的對象今妄,或數(shù)組以表格形式輸出郑口,相比傳統(tǒng)樹形輸出,這種輸出方案更適合內(nèi)部元素排列整齊的對象或數(shù)組盾鳞,不然可能會出現(xiàn)很多的 undefined书妻。

var obj = {

fun: {

name: 'foo',

age: '18'

},

bar: {

name: 'bar',

age: '19'

}

};

var arr = [

['fun', '18'],

['bar', '19']

];

console.log(obj);

console.table(obj);

console.log(arr);

console.table(arr);


3.console.count([label])

輸出執(zhí)行到該行的次數(shù)例如:

(function() {

for (var i = 0; i < 5; i++) {

console.count('count');

}

})();

// count: 1

// count: 2

// count: 3

// count: 4

// count: 5


4.console.time(name)

計時器几莽,可以將成對的console.time()和console.timeEnd()之間代碼的運行時間輸出到控制臺上腾它,name參數(shù)可作為標(biāo)簽名璃俗。

console.time('計時器');

for (var i = 0; i < 1000; i++) {

for (var j = 0; j < 1000; j++) {}

}

console.timeEnd('計時器');


5.console.profile([profileLabel])

這是個挺高大上的東西,可用于性能分析推励。在 JS

? ? ? ? ? ? ? ? 開發(fā)中鹤耍,我們常常要評估段代碼或是某個函數(shù)的性能。在函數(shù)中手動打印時間固然可以验辞,但顯得不夠靈活而且有誤差稿黄。借助控制臺以及console.profile()方法我們可以很方便地監(jiān)控運行性能。

例如下面這段代碼:

function parent() {

for (var i = 0; i < 10000; i++) {

childA()

}

}

function childA(j) {

for (var i = 0; i < j; i++) {}

}

console.profile('性能分析');

parent();

console.profileEnd();


然后我們可以在 Profiles 面板下看到上述代碼運行過程中的消耗時間受神。

頁面加載過程的性能優(yōu)化是前端開發(fā)的一個重要部分抛猖,使用控制臺的 profiles 面板可以監(jiān)控所有 JS 的運行情況使用方法就像錄像機一樣,控制臺會把運行過程錄制下來鼻听。如圖财著,工具欄上有錄制和停止按鈕。

6. 其他方法

. 清除控制臺 clear()

. 將對象及子元素以目錄樹列出來 console.dir()

. 條件打映挪辍(斷言)console.assert()

3.常見問題

常用調(diào)試方法

4.解決方案

1. 斷點調(diào)試

斷點調(diào)試是最基礎(chǔ)的一個調(diào)試方法撑教,在調(diào)試的過程中查看變量和函數(shù)的變化狀態(tài),這使得不可見的程序運行過程變得可視化醉拓。

? ? ? ? ? ? ? ? 斷點調(diào)試都在source選項卡中進行伟姐,所以放在下面一起來討論。

2. sources 選項卡

a.

? ? ? ? ? ? 上圖source選項代碼序列上的藍色標(biāo)簽即為斷點的標(biāo)識亿卤,斷點也顯示在Breakpoint選項中愤兵,可以在Breakpoint選項卡中勾掉暫時不用的斷點,后面再使用的時候可以再勾選排吴,這樣就不用再代碼中翻來翻去迷失方向了秆乳。


b.

? ? ? ? ? ? 這幾個小圖標(biāo)前兩個和調(diào)試時頁面的兩個按鈕相同,

? ? ? ? ? ? 分別是暫停/開始和單步;往右邊兩個向上向下的箭頭意思是進入函數(shù)屹堰,和(執(zhí)行完)跳出函數(shù)肛冶;后面的一個是忽略所有斷點運行,這樣被避免更改完之后扯键,點掉所有斷點執(zhí)行一遍在挨個加斷點的尷尬睦袖。


c. watch窗口:

? ? ? ? ? ? 點擊“+”添加一個想要監(jiān)視的變量,在整個調(diào)試過程中荣刑,這個變量會一直顯示在這里馅笙,就不用在函數(shù)之間苦苦尋找,然后再“hover”上去顯示它的值嘶摊,非常適合全局變量的監(jiān)視延蟹。


5.編碼實戰(zhàn)

6.擴展思考

為什么不提倡用alert進行調(diào)試评矩?

一方面叶堆,傳統(tǒng)的alert調(diào)試方式已經(jīng)漸漸不能滿足前端開發(fā)的種種場景。而且alert調(diào)試方式彈出的調(diào)試信息斥杜,那個窗口著實不太美觀虱颗,而且會遮擋部分頁面內(nèi)容,著實有些不太友好蔗喂。

另一方面忘渔,alert的調(diào)試信息會中斷代碼,阻礙頁面的繼續(xù)渲染缰儿。這就意味著開發(fā)人員調(diào)試完成后畦粮,必須手動清除這些調(diào)試代碼,實在有些麻煩乖阵。

另外宣赔,如果在循環(huán)中使用alert,光關(guān)閉彈出的窗口就夠自己累的了瞪浸,哈哈儒将!

7.參考文獻

參考一:你真的了解console嗎

參考二:Chrome開發(fā)者工具不完全指南

參考三:

? ? ? ? ? ? ? ? ? ? >Google

? ? ? ? ? ? ? ? Developers官網(wǎng)

參考三:CSDN中文IT網(wǎng)

8.更多討論

大家在調(diào)試程序中有什么比較好的方法分享一下?

鳴謝

感謝大家觀看


今天的分享就到這里啦对蒲,歡迎大家點贊钩蚊、轉(zhuǎn)發(fā)、留言蹈矮、拍磚~

技能樹.IT修真院???

? “我們相信人人都可以成為一個工程師砰逻,現(xiàn)在開始,找個師兄泛鸟,帶你入門蝠咆,掌控自己學(xué)習(xí)的節(jié)奏,學(xué)習(xí)的路上不再迷锰缚觯”勺美。

? ?這里是技能樹.IT修真院递胧,成千上萬的師兄在這里找到了自己的學(xué)習(xí)路線,學(xué)習(xí)透明化赡茸,成長可見化缎脾,師兄1對1免費指導(dǎo)。

? ?快來與我一起學(xué)習(xí)吧~http://www.jnshu.com/login/1/21109035

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末占卧,一起剝皮案震驚了整個濱河市遗菠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌华蜒,老刑警劉巖辙纬,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異叭喜,居然都是意外死亡贺拣,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門捂蕴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來譬涡,“玉大人,你說我怎么就攤上這事啥辨∥性龋” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵溉知,是天一觀的道長陨瘩。 經(jīng)常有香客問我,道長级乍,這世上最難降的妖魔是什么舌劳? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮卡者,結(jié)果婚禮上蒿囤,老公的妹妹穿的比我還像新娘。我一直安慰自己崇决,他們只是感情好材诽,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著恒傻,像睡著了一般脸侥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盈厘,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天睁枕,我揣著相機與錄音,去河邊找鬼。 笑死外遇,一個胖子當(dāng)著我的面吹牛注簿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播跳仿,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼诡渴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了菲语?” 一聲冷哼從身側(cè)響起妄辩,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎山上,沒想到半個月后眼耀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡佩憾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年哮伟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸯屿。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡澈吨,死狀恐怖把敢,靈堂內(nèi)的尸體忽然破棺而出寄摆,到底是詐尸還是另有隱情,我是刑警寧澤修赞,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布婶恼,位于F島的核電站,受9級特大地震影響柏副,放射性物質(zhì)發(fā)生泄漏勾邦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一割择、第九天 我趴在偏房一處隱蔽的房頂上張望眷篇。 院中可真熱鬧,春花似錦荔泳、人聲如沸蕉饼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昧港。三九已至,卻和暖如春支子,著一層夾襖步出監(jiān)牢的瞬間创肥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留叹侄,地道東北人巩搏。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像趾代,于是被迫代替她去往敵國和親塔猾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容