Tatsuya Oiwa About Archive Feed Github Twitter

Node.jsのconsole.logとprocess.stdout.writeの違い

console.log は、関数呼び出し時に渡された引数の値をコンソール上に標準出力するメソッドである。

console.log('hello world'); //=> hello world

これとほぼ同じ用途で使われるメソッドに process.stdout.write がある。

process.stdout.write('hello world'); //=> hello world

両者の違いは何なのかというと、実は console.log はその関数内で process.stdout.write を呼んでいる。以下は、joyent/node の実際のコードである。

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

ただし、両者には大きく2つの違いがあることがわかる。

1つめは、console.log は出力の最後に改行 \n を追加する。そのため、意図して改行を外したい場合には、代わりに process.stdout.write を使うと良い。

2つめは、console.logutil.format を使って文字列をフォーマットしている。そのため、console.log では、次のようにフォーマット用の文字列とフォーマットした値を任意の数だけ渡して使うことができる。

console.log('count: %d', count);

参考: javascript - Difference between "process.stdout.write" and "console.log" in node.js? - Stack Overflow