"process.stdout. "在node.js中写入“和”console.log“?

EDIT:使用console.log作为变量显示了许多不可读的字符,而使用process.stdout.write显示了一个对象。

为什么呢?


当前回答

Console.log()每次调用它都会添加大量内容和新行

Process.stdout.write()只是纯文本,没有格式

至少我是这么被教导的

其他回答

简单的区别是: Console.log()方法自动添加新的行字符。这意味着如果我们循环遍历并打印结果,每个结果将在新行中打印。

Process.stdout.write()方法不会追加新的行字符。适用于打印图案。

这里的答案很好。下面将详述console.log格式化函数的重要性。尚未提到的格式化特性之一是组级别,日志将支持组级别,但stdout不支持组级别。

console.log('Begin...')

console.group()
console.log('Line 2 (console.log)')
process.stdout.write('Line 3 (process.stdout)\n')
console.log('Line 4 (console.log)')
process.stdout.write('Line 5 (process.stdout)') // no newline
console.groupEnd()

console.log('...done')

输出:

Begin...
  Line 2 (console.log)
Line 3 (process.stdout)
  Line 4 (console.log)
Line 5 (process.stdout)...done

注意,stdout不支持控制台。组格式,并始终写入行首,其中console.log表示分组并适当缩进。


只对日志语句(和一个额外的组)执行相同的操作:

console.log('Begin...')

console.group()
console.log('Line 2 (console.log)')
console.log('Line 3 (console.log)')
console.log('Line 4 (console.log)')
console.log('Line 5 (console.log)')
console.group()
console.log('Line 6 (console.log)')
console.log('Line 7 (console.log)')
console.groupEnd()
console.groupEnd()

console.log('...done')

输出:

Begin...
  Line 2 (console.log)
  Line 3 (console.log)
  Line 4 (console.log)
  Line 5 (console.log)
    Line 6 (console.log)
    Line 7 (console.log)
...done

Console.log()每次调用它都会添加大量内容和新行

Process.stdout.write()只是纯文本,没有格式

至少我是这么被教导的


实现process.sdout。Write, process. sout . Write是一个直接输出到控制台的缓冲区/流。

根据我的puglin serverline: console = new console (consoleOptions),您可以用自己的readline系统重写console类。

你可以看到console.log的源代码:

第十四节。X - lib/internal/console/constructor.js; 对于旧版本:v10.0.0 - lib/console.js。


更多信息:

readline。创建你的自定义行为或使用控制台输入。

Console.log()使用格式化输出调用process.stdout.write。具体实现请参见console.js中的format()。

目前(v0.10.ish):

Console.prototype.log = function() {
  this._stdout.write(util.format.apply(this, arguments) + '\n');
};