質問: JavaScriptで標準出力に文字列"Hello, world!"を出力するプログラムを書きたいのですが、どのようにすれば良いでしょうか。 Node.jsを用いるのは妥当なのでしょうか。より一般的な方法は他に有るでしょうか。 --- 検索してみたところ、下のリンクのような解説が見つかり、これらは私がやりたいことと一致しています。 * Node.js入門(開発環境セットアップ〜Hello Worldまで) - Qiita * 君はもうJavaScriptの標準入出力を体験したか!? - コンパイラかく語りき * Node.jsを使ってCommand line ツールことはじめ - ぶるーすくりーん 上記も含め私が探した範囲では標準入出力やファイルを扱うものはNode.jsを使用しているものばかりだったのですが、次に示す理由から、今回の用途でNode.jsを使うのは妥当なのか、他にJavaScriptとして正当な(一般的な)やり方があるのでは無いかという疑問が払拭出来ていません。 * Node.jsはよく "*サーバサイドJavaScript環境*" というような呼称で説明されているが(参考:Wikipedia)私が行いたいのはサーバサイドでなくクライアントサイドプログラミングである。(そもそも何を以ってサーバ/クライアントとするのかも不明ですが...) + 少なくともWikipediaのNode.jsのページ からリンクされている "サーバーサイド・スクリプト" に書かれていることは今回私が行いたいこととは異なる。Webサービスを作りたいわけではない。 * サーバサイド、という単語を無視したとしても、公式サイトにある説明もやはり私が行いたいこととずれているように感じる。 + 標準出力に出すのは当たり前の処理過ぎてNode.jsの特徴としてイントロダクションに記載するまでもない、ということはあり得そう。(が、JavaScriptで標準入出力を扱うことはそんなに当然の事のようには感じられなかった)
回答: JavaScriptは言語であって環境と呼べるようなものは持っていません。Web Browser上でAJAXに使われていると思われがちですが、JavaScript自身にはネットワーク機能も標準入出力もありません。JavaScript単体では数値・文字列・配列・オブジェクトなどを扱えるだけで、他の機能はすべてWeb Browserから提供されたものです。 node.jsはJavaScriptにライブラリを加えたものであり、標準入出力やネットワーク処理もnode.jsが提供するライブラリを使って初めて使用可能になるものです。 node.jsを選択することは妥当と思いますが、その他には例えばWindows Scripting Hostも標準入出力を提供します。Windowsをお持ちでしたら`hello.js`に ``` function hello() { WScript.Echo("Hello, world!"); } hello(); ``` と記述するとコマンドプロンプト上で ``` > cscript //nologo hello.js Hello, world! > ``` という結果を得られます。