console對(duì)象與控制臺(tái)
-
console
對(duì)象是JavaScript
的原生對(duì)象,可以輸出各種信息到控制臺(tái),并且還提供了很多有用的輔助方法。 - console的常見(jiàn)用途有兩個(gè):
1、調(diào)試程序,顯示網(wǎng)頁(yè)代碼運(yùn)行時(shí)的錯(cuò)誤信息。
2、提供了一個(gè)命令行接口,用來(lái)與網(wǎng)頁(yè)代碼互動(dòng)。
console.log()、console.info、console.debug
-
console.log
方法用于在控制臺(tái)輸出信息。它可以接受一個(gè)或多個(gè)參數(shù),將它們連接起來(lái)輸出。
console.log('Hello World')
// Hello World
console.log('a', 'b', 'c')
// a b c
- 如果第一個(gè)參數(shù)是格式字符串(使用了格式占位符),
console.log
方法將依次用后面的參數(shù)替換占位符,然后再進(jìn)行輸出。
console.log(' %s + %s = %s', 1, 1, 2)
// 1 + 1 = 2
-
console.log
方法支持以下占位符,不同類(lèi)型的數(shù)據(jù)必須使用對(duì)應(yīng)的占位符。
%s
字符串
%d
整數(shù)
%i
整數(shù)
%f
浮點(diǎn)數(shù)
%o
對(duì)象的鏈接
%c CSS
格式字符串
var number = 11 * 9;
var color = 'red';
console.log('%d %s balloons', number, color);
// 99 red balloons
上面代碼中,第二個(gè)參數(shù)是數(shù)值,對(duì)應(yīng)的占位符是%d,第三個(gè)參數(shù)是字符串,對(duì)應(yīng)的占位符是%s。
-
console.info
是console.log
方法的別名,用法完全一樣。只不過(guò)console.info
方法會(huì)在輸出信息的前面,加上一個(gè)藍(lán)色圖標(biāo)。 -
console.debug
方法與console.log
方法類(lèi)似,會(huì)在控制臺(tái)輸出調(diào)試信息。但是,默認(rèn)情況下,console.debug
輸出的信息不會(huì)顯示,只有在打開(kāi)顯示級(jí)別在verbose
的情況下,才會(huì)顯示。
console.warn(),console.error()
-
warn
方法輸出信息時(shí),在最前面加一個(gè)黃色三角,表示警告 -
error
方法輸出信息時(shí),在最前面加一個(gè)紅色的叉,表示出錯(cuò),同時(shí),還會(huì)高亮顯示輸出文字和錯(cuò)誤發(fā)生的堆棧。其他方面都一樣。
console.table()
- 對(duì)于某些復(fù)合類(lèi)型的數(shù)據(jù),console.table方法可以將其轉(zhuǎn)為表格顯示,例:
var languages = [
{ name: "JavaScript", fileExtension: ".js" },
{ name: "TypeScript", fileExtension: ".ts" },
{ name: "CoffeeScript", fileExtension: ".coffee" }
];
console.table(languages);
上面代碼的language變量,轉(zhuǎn)為表格顯示如下:
1.png
console.count()
-
count
方法用于計(jì)數(shù),輸出它被調(diào)用了多少次,例:
function greet(user) {
console.count();
return 'hi ' + user;
}
greet('bob')
// : 1
// "hi bob"
greet('alice')
// : 2
// "hi alice"
greet('bob')
// : 3
// "hi bob"
上面代碼每次調(diào)用greet
函數(shù),內(nèi)部的console.count
方法就輸出執(zhí)行次數(shù)。
- 該方法可以接受一個(gè)字符串作為參數(shù),作為標(biāo)簽,對(duì)執(zhí)行次數(shù)進(jìn)行分類(lèi)。
function greet(user) {
console.count(user);
return "hi " + user;
}
greet('bob')
// bob: 1
// "hi bob"
greet('alice')
// alice: 1
// "hi alice"
greet('bob')
// bob: 2
// "hi bob"
上面代碼根據(jù)參數(shù)的不同,顯示bob
執(zhí)行了兩次,alice
執(zhí)行了一次。
console.dir(),console.dirxml()
-
dir
方法用來(lái)對(duì)一個(gè)對(duì)象進(jìn)行檢查(inspect),并以易于閱讀和打印的格式顯示。
console.log({f1: 'foo', f2: 'bar'})
// Object {f1: "foo", f2: "bar"}
console.dir({f1: 'foo', f2: 'bar'})
// Object
// f1: "foo"
// f2: "bar"
// __proto__: Object
上面代碼顯示dir方法的輸出結(jié)果,比log
方法更易讀,信息也更豐富。
該方法對(duì)于輸出 DOM
對(duì)象非常有用,因?yàn)闀?huì)顯示DOM
對(duì)象的所有屬性。
-
dirxml
方法主要用于以目錄樹(shù)的形式,顯示DOM
節(jié)點(diǎn)。
如果參數(shù)不是DOM
節(jié)點(diǎn),而是普通的JavaScript
對(duì)象,console.dirxml
等同于console.dir
。
console.assert()
-
console.assert
方法主要用于程序運(yùn)行過(guò)程中,進(jìn)行條件判斷,如果不滿足條件,就顯示一個(gè)錯(cuò)誤,但不會(huì)中斷程序執(zhí)行。這樣就相當(dāng)于提示用戶,內(nèi)部狀態(tài)不正確。
console.time(),console.timeEnd()
- 這兩個(gè)方法用于計(jì)時(shí),可以算出一個(gè)操作所花費(fèi)的準(zhǔn)確時(shí)間。
console.group(),console.groupEnd(),console.groupCollapsed()
-
console.group
和console.groupEnd
這兩個(gè)方法用于將顯示的信息分組。它只在輸出大量信息時(shí)有用,分在一組的信息,可以用鼠標(biāo)折疊/展開(kāi)。 -
console.groupCollapsed
方法與console.group
方法很類(lèi)似,唯一的區(qū)別是該組的內(nèi)容,在第一次顯示時(shí)是收起的(collapsed),而不是展開(kāi)的。
console.trace(),console.clear()
-
console.trace
方法顯示當(dāng)前執(zhí)行的代碼在堆棧中的調(diào)用路徑。 -
console.clear
方法用于清除當(dāng)前控制臺(tái)的所有輸出,將光標(biāo)回置到第一行。如果用戶選中了控制臺(tái)的“Preserve log”選項(xiàng),console.clear方法將不起作用。
debugger 語(yǔ)句
-
debugger
語(yǔ)句主要用于除錯(cuò),作用是設(shè)置斷點(diǎn)。如果有正在運(yùn)行的除錯(cuò)工具,程序運(yùn)行到debugger
語(yǔ)句時(shí)會(huì)自動(dòng)停下。如果沒(méi)有除錯(cuò)工具,debugger
語(yǔ)句不會(huì)產(chǎn)生任何結(jié)果,JavaScript 引擎自動(dòng)跳過(guò)這一句。
Chrome 瀏覽器中,當(dāng)代碼運(yùn)行到debugger
語(yǔ)句時(shí),就會(huì)暫停運(yùn)行,自動(dòng)打開(kāi)腳本源碼界面。
for(var i = 0; i < 5; i++){
console.log(i);
if (i === 2) debugger;
}
上面代碼打印出0,1,2以后,就會(huì)暫停,自動(dòng)打開(kāi)源碼界面,等待進(jìn)一步處理。