JavaScript 中 console 的用法

2021-09-19 13:46:52 字數 2776 閱讀 5043

以下示例的執行環境是 chrome 43。

先來談談我們最熟悉也最常用的console.log()方法。

我們最常用的做法是通過它來輸出乙個變數或者輸出乙個字串。比如下面:

console.log("hello china!");

var str = "hello world!";

console.log(str);

執行結果如下:

hello china!

hello world!

但我們也可以這樣用console.log()

// **段 1

var str1 = "hello";

var str2 = "world";

console.log(str1, str2);

// **段 2

console.log("%d年%d月%d日", 2015, 09, 22);

控制台會輸出:

hello world

2023年9月22日

**片段 1 顯示,console.log()的引數可以有多個,輸出的結果以乙個空格隔開。

**片段 2 顯示,console.log()可以使用 c 語言printf()風格的佔位符,不過其支援的佔位符種類較少,只支援字串(%s)、整數(%d或%i)、浮點數(%f)和物件(%o)。

這四個方法的使用方法跟console.log()一模一樣,差別在於輸出的顏色與圖示不同。下面是示例:

console.log("log");

console.debug("debug");

console.info("info");

console.warn("warn");

console.error("error");

執行結果如下:

我們看下面乙個變數:

var people = , 

"person2": ,

"person3":

};

我們用console.log()將之在 chrome 的控制台中輸出:

再用console.table()輸出:

所以從上面兩種輸出我們可以看出,當輸出類似於這種兩層巢狀的物件時,我們可以選擇console.table()以**的形式輸出。當然,巢狀三層及以上的也會以**形式輸出,但限於**只能顯示二維資訊的特點,其會在巢狀三層或以上的地方會顯示 "object" 字串。

在除錯時,我們經常需要知道一段**執行時間,我們可以使用這兩行**來實現。看下面一段**:

console.time("for-test");

var arr = ;

for(var i = 0; i < 100000; i++) );

}console.timeend("for-test");

輸出為:

for-test: 176.152ms
從上面的例子可以看出,我們用console.time()console.timeend()包圍要測試執行時間的**,這兩個方法的引數保持一致,以便正確識別和匹配**開始和結束的位置。

console.assert()類似於單元測試中的斷言,當表示式為 false 時,輸出錯誤資訊。示例如下:

var arr = [1, 2, 3];

console.assert(arr.length === 4);

輸出結果如下:

除錯**時,我們經常需要知道一段**被執行了多少次,我們可以使用console.count()來方便的達到我們的目的。示例如下:

function func() 

for(var i = 0; i < 3; i++)

執行結果為:

label: 1

label: 2

label: 3

一般的console.log()方法的輸出沒有層級關係,在需要一些顯示層級關係的輸出中顯得蒼白無力,使用console.group()可以達到我們的目的。示例**如下:

console.group("1");

console.log("1-1");

console.log("1-2");

console.log("1-3");

console.groupend();

console.group("2");

console.log("2-1");

console.log("2-2");

console.log("2-3");

console.groupend();

執行結果為:

把 "group" 換成 "groupcollapsed",則預設為摺疊執行結果。

由於本文只列出部分方法,檢視完整方法請移步阮一峰前輩的部落格。

JavaScript中prototype的理解

prototype使我們能夠向物件新增屬性或者方法。語法 object.prototype.name value 2.基於原型的繼承 obj2 和obj3都是函式foo的例項,可以看到每個例項不僅有自己自身的屬性,還具有原型鏈上的x 也就是foo.prototype 3.prototype與原型 通...

CONS形式化 (相對完美版)

defun mycons x y lambda s z funcall funcall s x y z defun wrapcar s lambda a b lambda z funcall a s z defun mycar n lambda s z funcall n wrapcar s z d...

靜態函式能否為virtual或者const函式

1.virtual與靜態函式 c 中,靜態成員函式不能被宣告為virtual函式。例如,下面的程式會編譯失敗。includeclass test 同樣地,靜態成員函式也不能被宣告為const和.下面的程式也會編譯失敗。includeclass test 如果宣告為下面這樣,是可以的。const st...