Chrome 開發工具之Console


前段時間看git的相關,記的筆記也大致寫到了博客上,還有些因為運用不熟,或者還有一些疑惑點,暫時也不做過多糾纏,之后在實踐中多運用得出結論再整理分享吧。

工欲善其事,必先利其器。要想做好前端的工作,也應該多了解瀏覽器開發工具的使用,近來幾天在看html和css的一些技巧性知識,順便也把chrome一些懂的地方再熟悉和不懂的地方去學習,把開發工具理解理解,也分享給小伙伴們,今天暫時是console相關的吧(偷個小懶,從用的最熟的面板入手,之后計划整理出chrome開發工具各個面板的使用說明~也需要時間測測,還有兩個面板用的不熟呢)。

console.assert(expression,object)

當expression表達式的結果為true的時候,控制台無顯示;當滿足expression表達式滿足false條件的時候,該消息以及堆棧跟蹤被寫入控制台。

console.assert(1>1,"false");
// Assertion failed: false
console.assert(1>0,"false");
// undefined

console.clear()

清除控制台信息,如果setting(設置)中"Preserve Logs"(保持日志)是打開狀態時,console.clear()失效。

console.count(label)

打印出這個方法被執行的次數。在調試js執行的時候挺有幫助,可以結合console.time(label)/console.timeEnd(label)結合,看某函數執行的次數及每次執行所耗的時間。

function showCount(){
  console.count("call");
}
showCount();   // call: 1
showCount();   // call: 2
showCount();   // call: 3

console.dir(object)

將指定對象用javascript封裝並打印,如果指定的對象是一個HTML元素,則列出DOM屬性。

console.dir(document.body);
// DOM對象(body)

對於這個方法,比如我們需要看某個DOM的屬性的時候,document.getElementById('someid')打印出來的應該是個<div id="someid">...</div>,這就比較尷尬了,打印的是個html元素,然后使用console.dir(document.getElementById('someid'))打印后,便能夠看到整個DOM對象及屬性了。

console.group(object[,object,...])

根據可選的標題產生一個新的日志列表,之后直至console.groupEnd()之前的控制台輸出信息都會列在這個日志組中,如果沒使用console.groupEnd()進行閉合,則之后的輸出將都包括在這個日志組中。

console.group("g");
console.log(1);
console.dir(document.body);
console.groupEnd("g");
console.log(2);
/*
g
|-- 1
|-- DOM對象(body)
-
2
*/

日志組可嵌套輸出:

console.group("g1");
console.log(1);
console.group("g2");
console.log(2);
console.dir(document.body);
console.groupEnd("g2");
console.dir(document.body);
console.groupEnd("g1");
console.log(3);
/*
g1
|-- 1
|-- g2
|---- 2
|---- DOM對象(body)
|-- DOM對象(body)
-
3
*/

console.groupCollapsed(object[, object, ...])

和console.group(object[,object,...])使用方式相同,不同的是console.group(object[,object,...])打印的日志組的狀態是打開的,而console.groupCollapsed(object[, object, ...])打印的是閉合的日志組。

console.log(object [, object, ...])

在控制台打印信息。你可以在這個方法中傳入一個或多個對象,每個對象會通過計算后加入一串使用空格分隔的字符串。傳入的第一個參數可能會包含格式說明符號,該說明符號由一個百分號(%)后加一個代表需要被替換內容的字母。

開發工具支持以下說明符號:

%s            字符串
%d or %i      整數
%f            浮點數
%o            可擴展DOM元素(在element面板一樣)
%O            可擴展javascript元素
%c            根據提供的css樣式輸出字符串

效果:

console.log("hello world",1,true);
// hello world 1 true

console.log("%s > %d ", "100", 50);
// 100 > 50

console.log("%s > %d ", "100", "50");
// 100 > NaN

console.log("%s > %f ", "100", 50.2);
// 100 > 50.2

console.log("%O is a object", {a:"1"});
// Object{/*object*/} is a object

console.log("%o is a element", document.body);
// <body>...</body> html元素

console.log("%O is a element", document.body);
// DOM對象(body)

console.log("%c hello world","background:black;color:white");
// hello world(白字黑背景)

console.error(object [, object, ...])

以報錯的格式打印信息,並且在調用列出產生堆棧跟蹤。

console.error(1);
// 1

console.info(object [, object, ...])

以信息的格式打印信息。

console.info(1);
// 1

console.warn(object [, object, ...])

以警告的格式打印信息。

console.warn(1);
// 1

console.profile([label])(已廢棄)

標出cpu使用的開始(start)和結束(finish)的點,對應結束標識是console.porfileEnd(),可以通過這兩個方法看函數造成cpu消耗信息,chrome開發工具的Profile面板也是處理CPU信息的功能,並且執行這個方法之后,在Profile面板也會出現一塊內容,對應的正是代碼所執行的那塊信息內容。

console.profile("cpu-profile");
var a = 1;
var b = a;
var c = a+b;
console.profileEnd();
// Profile 'cpu-profile' started.
// Profile 'cpu-profile' finished.

console.time(label)

開始一個新的帶有標簽的計時器。在之后的代碼中調用console.timeEnd(label)時,停止計時並且將所耗時間間打印在控制台。注意:timeEnd的label需要和time的label對應上才算閉合這個計時。

console.time("Array initialize");
var arr = new Array(100),
      len = arr.length,
      i;
for (i = 0; i < len; i++) {
  arr[i] = new Object();
};
console.timeEnd("Array initialize");   // 輸出: Array initialize: 0.233ms

在測試這個的時候深深嫌棄下我的電腦,老電腦了...上次測這串代碼甚至是0.711ms,而在公司的電腦才0.046ms...

console.trace()

顯示當前所執行到的代碼處的堆棧跟蹤信息。

console.trace("trace info");
/*
trace info
(anonymous function) fileName:line_num
*/

console.table(array[object])

將數組數據(數組元素為對象)以table布局展示。

var data = [{id:1,value:"a"},{id:2,value:"b"},{id:3,value:"c"},{id:4,value:"d"},{id:5,value:"e"},{id:6,value:"f"}];
console.table(data);

chrome自帶有html元素選擇器,和眾人所熟悉的jquery的選擇器使用規則相似

<div id="nav" index="0"></div>
<div class="nav" index="1"></div>
<div class="nav" index="2"></div>
<div class="nav" index="3"></div>
<script>
  var obj = {value:1};
</script>

$()

返回符合css選擇器條件的第一個元素,是document.querySelector()的簡寫。

$('#nav')
// <div id="nav" index="0"></div>(html元素)
$('.nav')
// <div class="nav" index="1"></div>(html元素) 注意:這里取的是class含有nav樣式的元素列表中的第一個元素

$$()

返回符合css選擇器條件的所有元素組成的數組,是document.querySelectorAll()的封裝。

$$('.nav')
// [<div class="nav" index="1"></div>,<div class="nav" index="2"></div>,<div class="nav" index="3"></div>]

$_

返回最近一次計算得出的值,默認undefined。

1+2
// 3
$_
// 3
$$('.nav')
// [<div class="nav" index="1"></div>,<div class="nav" index="2"></div>,<div class="nav" index="3"></div>]
$_
// [<div class="nav" index="1"></div>,<div class="nav" index="2"></div>,<div class="nav" index="3"></div>]
$_.length 
// 3

$0-$4

返回最近5次選中的元素。

$0   最近的第一次

$1   最近的第二次

$2   最近的第三次

$3   最近的第四次

$4   最近的第五次

inspect()

inspect()函數需要傳入一個DOM元素或者javascript引用,如果傳入的是DOM元素,開發者工具會跳到Elements面板,並且展示對應的元素;如果傳入的是javascript引用,開發者工具跳到Profile面板或者控制台顯示堆棧信息。

inspect($('#nav'));

 

inspect(obj);
// Object{value:1}

就這些吧,這里省略了console.dirxml(object)和console.timeStamp([label])。

歡迎小伙伴交流討論,有更多玩法也多分享哦~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM