# 控制台
~~~
稳定度: 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。