"process.stdout. "在node.js中写入“和”console.log“?
EDIT:使用console.log作为变量显示了许多不可读的字符,而使用process.stdout.write显示了一个对象。
为什么呢?
"process.stdout. "在node.js中写入“和”console.log“?
EDIT:使用console.log作为变量显示了许多不可读的字符,而使用process.stdout.write显示了一个对象。
为什么呢?
当前回答
查看Node文档,显然console.log只是process.stdout.write,在结尾加一个换行符:
console.log = function (d) {
process.stdout.write(d + '\n');
};
来源:http://nodejs.org/docs/v0.3.1/api/process.html process.stdout
其他回答
我知道这是一个非常老的问题,但我没有看到任何人谈论process.stdout.write和console.log之间的主要区别,我只是想提一下。
正如Mauvis Leford和TK-421指出的那样,console.log在行末添加了一个换行字符(\n),但这并不是它的全部功能。
该代码至少从0.10开始就没有更改过。X版本,现在我们有一个5。X版本。
代码如下:
Console.prototype.log = function() {
this._stdout.write(util.format.apply(this, arguments) + '\n');
};
正如您所看到的,有一部分表示.apply(this, arguments),这在功能上产生了很大的差异。用例子更容易解释:
Process.stdout.write有一个非常基本的功能,你可以在里面写一些东西,像这样:
process.stdout.write("Hello World\n");
如果你不把换行符放在末尾,你会在字符串后面得到一个奇怪的字符,就像这样:
process.stdout.write("Hello World"); //Hello World%
(我认为这意味着类似于“程序的结束”,所以你只会看到它,如果你的process.stdout.write被用在你的文件的末尾,你没有添加断行)
另一方面,console.log可以做更多的工作。
你可以用同样的方法来使用它 console.log(“Hello World”);//这里不需要换行符,因为换行符已经设置好了,而且那个奇怪的字符也消失了 你可以写多个字符串 console.log(“你好”、“世界”); 你可以进行联想 console.log("Hello %s", "World") //当"World"在变量中时有用
就是这样,添加的功能要感谢util.format.apply部分(我可以谈论很多关于它到底做了什么,但你明白我的意思,你可以在这里阅读更多)。
我希望有人觉得这个信息有用。
实现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。创建你的自定义行为或使用控制台输入。
一个没有被提及的巨大区别是这个过程。stdout只接受字符串作为参数(也可以是管道流),而console.log接受任何Javascript数据类型。
e.g:
// ok
console.log(null)
console.log(undefined)
console.log('hi')
console.log(1)
console.log([1])
console.log({one:1})
console.log(true)
console.log(Symbol('mysymbol'))
// any other data type passed as param will throw a TypeError
process.stdout.write('1')
// can also pipe a readable stream (assuming `file.txt` exists)
const fs = require('fs')
fs.createReadStream('file.txt').pipe(process.stdout)
简单的区别是: Console.log()方法自动添加新的行字符。这意味着如果我们循环遍历并打印结果,每个结果将在新行中打印。
Process.stdout.write()方法不会追加新的行字符。适用于打印图案。
Console.log()每次调用它都会添加大量内容和新行
Process.stdout.write()只是纯文本,没有格式
至少我是这么被教导的