# 控制臺
~~~
穩定度: 4 - 凍結
~~~
- {Object}
用于向 stdout 和 stderr 打印字符。類似于大部分 Web 瀏覽器提供的 console 對象函數,在這里則是輸出到 stdout 或 stderr。
當輸出目標是一個終端或者文件時,console函數是同步的(為了防止過早退出時丟失信息).當輸出目標是一個管道時它們是異步的(防止阻塞過長時間).
也就是說,在下面的例子中,stdout 是非阻塞的,而 stderr 則是阻塞的。
~~~
$ node script.js 2> error.log | tee info.log
~~~
在日常使用中,您不需要太擔心阻塞/非阻塞的差別,除非您需要記錄大量數據。
### console.log([data], [...])
向 stdout 打印并新起一行。這個函數可以像 `printf()` 那樣接受多個參數,例如:
~~~
console.log('count: %d', count);
~~~
如果在第一個字符串中沒有找到格式化元素,那么 `util.inspect` 將被應用到各個參數。詳見 [util.format()](#)。
### console.info([data], [...])
同 `console.log`。
### console.error([data], [...])
同 `console.log`,但輸出到 stderr。
### console.warn([data], [...])
同 `console.error`。
### console.dir(obj)
對 `obj` 使用 `util.inspect` 并將結果字符串輸出到 stdout。這個函數會忽略 `obj` 上的任何自定義 `inspect()`。
### console.time(label)
標記一個時間點。
### console.timeEnd(label)
結束計時器,記錄輸出。例如:
~~~
console.time('100-elements');
for (var i = 0; i < 100; i++) {
;
}
console.timeEnd('100-elements');
~~~
### console.trace(label)
打印當前位置的棧跟蹤到 stderr。
### console.assert(expression, [message])
與 [assert.ok()](#) 相同,如果 `expression` 執行結果為 `false` 則拋出一個帶上 `message` 的 AssertionError。