以下示例的執行環境是 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...