📜  Node.js 中 process.stdout.write 和 console.log 的区别(1)

📅  最后修改于: 2023-12-03 15:03:14.983000             🧑  作者: Mango

Node.js 中 process.stdout.write 和 console.log 的区别

在 Node.js 中, process.stdout.write() 和 console.log() 都可以用来向标准输出流(stdout)输出信息。它们的使用方式和返回结果略有不同,本文将介绍它们之间的区别。

process.stdout.write()

process.stdout.write() 是 Node.js 内置模块 process 的一个方法,它可以用来向标准输出流输出信息。该方法的返回值是 Boolean 类型,表示信息是否成功输出。

// 输出 Hello World 到标准输出流
process.stdout.write('Hello World');

// 输出结果:Hello World

值得注意的是,process.stdout.write() 方法只能接收字符串类型的参数,如果需要输出 JSON 对象或其他类型的数据,需要将其转换成字符串类型。

const data = { name: '张三', age: 18 };

// 转换 JSON 对象为字符串类型
const json = JSON.stringify(data);

// 输出 JSON 字符串到标准输出流
process.stdout.write(json);

// 输出结果:{"name":"张三","age":18}
console.log()

console.log() 是 Node.js 内置模块 console 的一个方法,它也可以用来向标准输出流输出信息。与 process.stdout.write() 不同的是,console.log() 可以接收多个参数,不限于字符串类型。该方法的返回值是 undefined。

// 输出字符串到标准输出流
console.log('Hello', 'World');

// 输出结果:Hello World

// 输出 JSON 对象到标准输出流
console.log({ name: '张三', age: 18 });

// 输出结果:{ name: '张三', age: 18 }

console.log() 方法可以接收占位符参数,将一组参数格式化为字符串后输出。占位符参数以 % 开头,后面的字符表示不同类型的数据,例如 %d 表示数字,%s 表示字符串,%j 表示 JSON 等等。

const name = '张三';
const age = 18;

// 输出格式化后的字符串到标准输出流
console.log('%s 的年龄是 %d 岁', name, age);

// 输出结果:张三 的年龄是 18 岁
区别对比
  • process.stdout.write() 只能接收字符串类型的参数,而 console.log() 可以接收多个参数,不限于字符串类型。
  • process.stdout.write() 方法的返回值是 Boolean 类型,表示信息是否成功输出,而 console.log() 的返回值是 undefined。
  • console.log() 方法支持占位符参数,可以将多个参数格式化为字符串输出,而 process.stdout.write() 不支持该功能。
  • console.log() 方法可以自动在输出内容的末尾添加一个换行符,而 process.stdout.write() 不会自动添加换行符。
总结

在 Node.js 中, process.stdout.write() 和 console.log() 都可以用来向标准输出流输出信息。两者间的不同之处在于使用方式和返回值的类型。process.stdout.write() 更适用于输出字符串类型的信息,而console.log() 更适用于输出多个参数或需要格式化输出的信息。