我所不知道的console物件的用法

一如初衷發表於2018-04-03

從學web前端開發至今,我一直使用document.write()和console.log()進行除錯,今天發現了console物件的新用法,所以寫下這篇記錄文件。

console物件

console物件是JavaScript的原生物件,可以輸出各種資訊到控制檯。

console的用途

  • 除錯程式,顯示網頁程式碼執行時的錯誤資訊

  • 提供一個命令列介面,用於與網頁程式碼互動

console物件的靜態方法

console物件提供的各種靜態方法,用來與控制檯視窗互動

1、console.log()

用於在控制檯輸出資訊,可以接收一個或多個引數連線起來輸出

// 例:
console.log('一個引數');  //輸出:一個引數

console.log('這是','傳入','多個引數','的用法');  //輸出:這是  傳入  多個引數  的用法

//支援佔位符
console.log(' %s + %s = %s',1,2,3);  輸出:1 + 2 = 3;

複製程式碼

支援以下佔位符

%s  字串
%d	整數
%i	整數
%f	浮點數
%o	物件的連結
%c	css格式字串
複製程式碼

console.log()每次輸出的結尾,自動新增換行符

%c的神奇用法

我所不知道的console物件的用法
2、console.info()

是console.log()的別名,用法完全一致。【ps:網上說這兩者的唯一區別是console.info()方法會在輸出資訊的前面加上一個藍色圖示。然而,我使用Chrome除錯時,並沒有藍色圖示】

//例:
console.info('使用console.info()形式輸出');
複製程式碼
3、console.debug()

使用方法與console.log()方法的使用類似,但是一般情況下,console.debug()輸出的資訊不會顯示,以下是對Chrome瀏覽器進行設定,使控制檯可以檢視到console.debug()輸出的資訊

//例:
console.debug('使用console.debug()方法進行除錯');
複製程式碼
我所不知道的console物件的用法
4、console.warn()

使用方法與console.log()類似,不同的是控制檯上的輸出樣式不一樣,console.warn()輸出前面帶有“黃色的三角形”,表示警告,具體輸出樣式如下:

//例:
console.warn('這是console.warn()方法輸出的資訊');
複製程式碼
我所不知道的console物件的用法
5、console.error()

使用的方法與console.log()類似;區別:console.error()方法在控制檯輸出的資訊樣式不同,console.error()資訊輸出前面會有一個“紅色的X”以及字型顏色也是紅色的,表示出錯了。具體顯示的樣式如下:

//例:
console.error('這是使用console.error()方法輸出的資訊');
複製程式碼
我所不知道的console物件的用法

小結:console.log()方法寫入標準輸出;console.error()和console.warn()寫入標準錯誤

6、console.table()

對於某些複合型別的資料,console.table()方法可以將其轉為表格顯示

//例:
var languages = [
    {
        name:'JavaScript',
        fileExtension:'.js'
    },
    {
        name:'php',
        fileExtension:'.php'
     },
     {
         name:'css',
         fileExtension:'.css'
      }
]
console.table(languages);
複製程式碼

輸出的效果圖如下:

7、console.count()

console.count()方法用於計數,輸出被呼叫了多少次

//例:
function greet(user){
    console.count();
    return 'hi' + user;
}

greet('chen');  //輸出:1
greet('cyq');   //輸出:2
greet('hehe');  //輸出:3

解析:3:表示greet()函式被呼叫了3次

複製程式碼

console.count()可以傳入一個引數,並且根據傳入的引數進行分組統計被呼叫的次數

//例:
function greet1(user){
   console.count(user);
   return 'hi ' + user;
}
greet1('chen');  //輸出:1
greet1('cyq');  //輸出:1
greet1('chen');   //輸出:2
複製程式碼
8、console.dir()

使用console.dir()方法對一個物件進行檢查,並易於閱讀和列印的格式顯示

例:
console.log({f1:'foo',f2:'bar'});
console.dir({f1:'foo',f2:'bar'});
複製程式碼

輸出的樣式如下:

以上console.dir()輸出的結果比console.log()輸出的結果更容易閱讀,資訊更豐富,該方法用於輸出DOm物件灰常有用。

9、console.dirxml()

console.dirxml()方法主要用於以目錄樹的形式,顯示DOM節點,若引數不是DOM節點,而是普通JS物件,則等同於console.dir()方法

具體的使用如下圖:

10、console.assert()

console.assert()方法主要用於程式執行中,進行條件判斷,若不滿足,則顯示錯誤資訊,不會中斷程式執行。相當於提示使用者,內部狀態不正確。

此函式接收兩個引數

  • 引數1:表示式

  • 引數2:字串

當第一個引數為false時,才會提示有錯誤,在控制檯輸出第二個引數,否則不輸出任何結果

11、console.time()和console.timeEnd()

這兩個方法用於計時,可以算出一個操作所花費的準確時間。console.time()方法用於計時開始,console.timeEnd()用於計時結束。他們的引數是:計時器的名稱

//例:
console.time('Array initialize');

var array = new Array(100000);
for(let i = array.length-1;i>=0;i--){
    array[i] = new Object();
};

console.timeEnd('Array initialize');  //輸出:Array initialize: 81.444091796875ms    【ps:計時器名稱:所耗費的時間】
複製程式碼
12、console.group() 和 console.groupEnd() 和 console.groupCollapsed()

console.group()和console.groupEnd()用於將顯示的資訊分組。它只在輸出大量資訊時有用,分在一組的資訊,可以用滑鼠摺疊/展開。

//例:
console.group('一級分組');
console.log('一級分組的內容');

console.group('二級分組');
console.log('二級分組的內容');

console.groupEnd(); //一級分組結束
console.groupEnd(); //二級分組結束
複製程式碼

輸出的結果如下:

console.groupCollapsed方法與console.group方法很類似,唯一的區別是該組的內容,在第一次顯示時是收起的(collapsed),而不是展開的

//例:
console.groupCollapsed('一級分組');
console.log('一級分組的內容');

console.groupCollapsed('二級分組');
console.log('二級分組的內容');

console.groupEnd(); //一級分組結束
console.groupEnd(); //二級分組結束

複製程式碼

效果圖如下

13.console.trace()

console.trace方法顯示當前執行的程式碼在堆疊中的呼叫路徑

//例:
console.trace()
複製程式碼

結果圖如下:

14、console.clear()

console.clear方法用於清除當前控制檯的所有輸出,將游標回置到第一行。如果使用者選中了控制檯的“Preserve log”選項,console.clear方法將不起作用。

//例:
console.clear();
複製程式碼

[ps:本文件所展示的測試用例都是在Chrome環境下進行測試的]

參考文件

console物件

相關文章