你所不知道的 Console

1.凡人視角


打印字符串

console.log("I am a 凡人");

打印提示消息

console.info("Yes, you arm a 凡人");

打印警告消息

console.warn("凡人你居然敢窺視我");

打印錯誤消息

console.error("天兵天將,把這個凡人給我打入地獄");

打印調(diào)試信息

console.debug("我就是傳說中的debug");


  2.上帝視角


查看所有方法
  console 除了上面的幾個方法還有什么方法呢?log 除了能打印字符串外,還能打印出對象,我們可以利用 console.log 打印自己。

console.log(console);

輸出:

Object {
assert: ...,
clear: ...,
count: ...,
debug: ...,
dir: ...,
dirxml: ...,
error: ...,
group: ...,
groupCollapsed: ...,
groupEnd: ...,
info: ...,
log: ...,
markTimeline: ...,
profile: ...,
profileEnd: ...,
table: ...,
time: ...,
timeEnd: ...,
timeStamp: ...,
timeline: ...,
timelineEnd: ...,
trace: ...,
warn: ...
}

啊咧咧?怎么這么多方法。其實上面的 console 方法 不一定每個瀏覽器 都有實現(xiàn),我這邊使用的是 chrome瀏覽器 。所以說,這個特性是非標(biāo)準(zhǔn)的,請盡量不要在 生產(chǎn)環(huán)境 中使用它。
  但是我們可以在 開發(fā)環(huán)境 中,合理的利用 這些方法來幫助我們開發(fā)。

  清理控制臺

如果我們在控制臺調(diào)試的時候,難免 強迫癥 發(fā)作想清理掉已經(jīng)亂七八糟的控制臺。瀏覽器和命令行 clear 一樣提供了一個清理函數(shù)console.clear() 。

console.clear()

當(dāng)然我們也可以用 chrome 的 command line api 來清理控制臺。
  clear()
  又或者可以使用按鍵Mac上 cmd + k ,Win ctrl + l(我用的是chrome瀏覽器)。

分組


當(dāng)代碼非常長,或者我們需要把一個函數(shù),或者一個文件中的函數(shù)等區(qū)分出來。我們可以使用分組來實現(xiàn)。
  代碼:

console.group('凡人');
console.log("手");
console.log("腳");
console.groupEnd();
console.group('神');
console.log("法力無邊");
console.log("騰云架霧");
console.groupEnd();

輸出:

如果想要輸出為折疊,我們可以使用 console.groupCollapsed ,用法和 console.group 類似。
  查看對象信息
  有時候我們需要打印出對象信息,可以使用 console.log 來進行簡單的輸出。
  代碼:

var
person = {
head: 1,
hand: 2,
leg: 2
};
console.log(person);

嗚嗚,可是這個顯示得好丑,我們這個時候就可以使用傳說中的神器 console.table 來幫助我們清楚的顯示 關(guān)聯(lián)數(shù)組信息。

var data = [
{
'姓名': '幼兒園',
'性別': '女'
},
{
'姓名': '李狗嗨'
,
'數(shù)量': 1
}
];
console.table(data);

輸出:

但是如果想要看詳細(xì)的對象信息,我們可以使用 console.dir,將一個 JavaScript 對象的所有屬性和屬性值顯示成一個可交互的列表,它還能打印出函數(shù)等。

console.dir(clear);

什么?你想看某個節(jié)點中的html代碼?沒事,我們可以用 console.dirxml 來查看頁面中對應(yīng)元素的 html/xml 內(nèi)容。
  html代碼:

<div id="person"> <p>I am a 凡人</p> </div>

javascirpt代碼:

var person = document.getElementById('person');
console.dirxml(person);

性能測試

雷軍粑粑老是喜歡說:“不服?跑個分?!庇袝r候,我們也需要對代碼跑個分。這個時候,我們可以使用console.time和console.timeEnd,他們可以記錄代碼運行所花費的時間。

console.time("神機妙算"); (function() { for(var i = 0; i < 10; i++) { var sum = (function() { var flog = 0; for(var i = 0; i < 10; i++) { flog+=i; } })(); } })(); console.timeEnd("神機妙算");

啊咧咧?你這個頂多就是 計時器 怎么能說是 性能測試 ??凸賱e急,我們這還有一個叫做 console.profile 和console.profileEnd **呢~~

console.profile("神機妙算"); (function() { for(var i = 0; i < 10; i++) { var sum = (function() { var flog = 0; for(var i = 0; i < 10; i++) { flog+=i; } })(); } })(); console.profileEnd("神機妙算");

輸出會顯示在 profile

什么還是不夠?你還想知道運行時的結(jié)果棧?可以可以,我們這還有一位 console.trace 哦。他可以看透大爺你的一局一動哦。
  代碼:

function add(num) { if (0 < num) { console.trace("現(xiàn)在num的值為", num); return num + add(num - 1); } else{ return 0; } } var a =3; add(3);

輸出:

  判斷真假


平時我們在寫代碼是時候,經(jīng)常需要判斷一下當(dāng)前值的真假情況,使用if或者三元表達(dá)式來達(dá)到目的。我們現(xiàn)在也可以使用console.assert 來判斷,該方法會在條件為錯誤時,返回一個 console.error 的輸出。

console.assert(1 == 1);
console.assert(1 == 0);
console.assert(!(1 == 0));

 統(tǒng)計次數(shù)

有時候我們需要統(tǒng)計一個函數(shù)或者被調(diào)用了幾次,我們通常會增加一個變量 count 來記錄,然后在控制臺中查看。這樣相當(dāng)?shù)穆闊覀兛梢允褂?console.count 函數(shù)來幫忙我們記錄次數(shù),并輸出。

function hi(name) { console.count(name); return "hi " + name; } for(var i = 0; i < 10; i++) { if(i < 4) { hi("person"); } else { hi("god"); } }

 總結(jié)
  console 中有很多對我們調(diào)試代碼有幫助的函數(shù),我們可以在開發(fā)環(huán)境中配合 console 來調(diào)試代碼,使得我們測試更加便利。

原文鏈接:https://segmentfault.com/a/1190000006721606
來源作者:ZHANGXIANGLIANG

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自JavaScript公眾號 1.凡人視角 打印字符串 代碼: console.log("I am a 凡人"...
    卡農(nóng)me閱讀 359評論 0 0
  • 工廠模式類似于現(xiàn)實生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實現(xiàn)同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 8,118評論 2 17
  • 《ijs》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 5,640評論 0 7
  • 對于js的調(diào)試,一般我們經(jīng)常用alert()或者console.log()進行調(diào)試。但是alert()會讓程序中斷...
    豬豬俠闖天下閱讀 879評論 0 0
  • js簡介 Js是一種基于事件和對象驅(qū)動的解釋性、松散性的語言。 一切皆對象 javascript 布蘭登艾奇 ...
    塔庫納瑪哈哈閱讀 1,348評論 0 2

友情鏈接更多精彩內(nèi)容