在node.js中看一些关于promise的视频时,这个家伙使用console.error((打印他知道会出错的东西,并使用console.log((打印其他东西。除了用不同的颜色打印东西之外,这两种功能之间还有什么主要区别吗?
console.error()
写入stderr
,而console.log()
写入stdout
,如文档中所述。
在nodejs的默认运行中,stdout
和stderr
都会进入控制台,但很明显,它们可以指向不同的地方,也可以使用不同的方法。例如,当使用诸如forever之类的工具时,这两个流被记录到单独的日志文件中,以便可以分别检查它们。
假设console.error()
可能包含更严重的信息,可能需要单独查看,但这实际上取决于您在自己的程序中如何使用console.log()
与console.error()
。
以下是基于不同方面对console.log((和console.error((之间差异的一些详细描述。
1.定义
Console.log((
添加在:v0.1.100中。
使用换行符打印到stdout
。可以传递多个参数,第一个用作主消息,所有其他参数用作替换值,类似于printf(3((参数都传递给util.format()
(。
控制台.error((
添加在:v0.1.100中。
使用换行符打印到stderr
。可以传递多个参数,第一个用作主消息,所有其他参数用作替换值,类似于printf(3((参数都传递给util.format()
(。
2.语法
Console.log((
console.log(obj1 [, obj2, ..., objN]);
console.log(msg [, subst1, ..., substN]);
控制台.error((
console.error(obj1 [, obj2, ..., objN]);
console.error(msg [, subst1, ..., substN]);
console.exception(obj1 [, obj2, ..., objN]);
console.exception(msg [, subst1, ..., substN]);
3.参数
Console.log((
(i( 要输出的JavaScript对象的列表。每个对象的字符串表示都按照列出和输出的顺序附加在一起。
obj1 ... objN
(ii(包含零个或多个替换字符串的JavaScript字符串。
msg
(iii(用于替换msg中的替换字符串的JavaScript对象。这为您提供了对输出格式的额外控制。
subst1 ... substN
控制台.error((.
注意:console.exception((是console.error((的别名;它们在功能上是相同的。
(i( 要输出的JavaScript对象的列表。每个对象的字符串表示都按照列出和输出的顺序附加在一起。
obj1 ... objN
(ii(包含零个或多个替换字符串的JavaScript字符串。
msg
(iii(用于替换msg中的替换字符串的JavaScript对象。这为您提供了对输出格式的额外控制。
subst1 ... substN
4.浏览器兼容性
Console.log((和Console.error((两者与所有流行的浏览器具有几乎相同的兼容性
注意:
(i( 在版本28中的google chromeSubstitution strings
的情况下,如果将负值传递给%d,它将被四舍五入到最接近的负整数,因此-0.1变为-1。
(ii(Substitution strings
两者都使用internet explorer(10(%c不受支持,当%d不是数字时,它将呈现为0
Stdout是缓冲的,而stderr不是。