【JavaScript(Node.js)】標準出力で数字を出力する方法

【JavaScript(Node.js)】標準出力で数字を出力する方法

JavaScript(Node.js)でコンソールに文字を表示したり、デバッグをしたりするときはconsole.logを頻繁に使うかと思います。

console.log("hi");

 

console.logは文字でも数字でも配列でも、あらゆるタイプのものをコンソールに表示できます。

ですが、標準出力では文字以外を出力しようとするとエラーがでます。

 

Node.jsにおける標準出力とは以下のようなもの

process.stdout.write("hi");

 

しかし数字を出力しようとするとエラーになります。

process.stdout.write(123);
events.js:200
throw er; // Unhandled 'error' event
^

TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be one of type string or Buffer. Received type number

引数は文字かBufferじゃないとダメだよって出ます。

 

コーディングテストなど、何らかの場面で標準出力を使うように指定されているときconsole.logと同じように数字を出力しようとしてエラーになるケースがあります。

 

解決方法は簡単で、型をStringに変換してやればいいです。

process.stdout.write(String(123));
process.stdout.write("" + 123);

いろいろやり方はありますが、とにかく文字にしてやればOK

 

ちなみに標準入力で受け取った値を数字として計算したいときは以下のように数字に変換できます。

console.log(input) // "10"
let num = Number(input); // 10
console.log(input) // "10"
let num = input | 0; // 10

いちいちNumber()を書くのがめんどうな人は |0で済ませてもよさそう。

※「|0」で数字に変換する方法は整数の場合のみ有効。小数の場合、小数点以下は消えます。