だいたいきままなエンジニア志望のブログ

エンジニア志望の大学院生の考えたことあれこれ

node.jsのREPLで変数宣言すると出力されるUndefinedは何者か

ふとJavascriptを触ってみようと思い立ち,node.jsを入れてみました.
そのときに少し気になったことがあったのでメモ

変数宣言時,謎のundefined

node.jsの対話環境であるREPLを起動して適当な変数を宣言してみると,「undefined」という見慣れない出力が。

> var test = "abc";
undefined
> test
'abc'

宣言に失敗したのかとも思いましたが変数は宣言できている様子。
宣言するたびに出てくるこいつは一体何なんだ...

正体は「文の結果」

この記事が参考になりました。
https://qiita.com/uhyo/items/39750a5359629b3fee05qiita.com

ざっくりまとめると

  • Javascriptは文の結果という概念を持っている (1+2なら結果は3)
  • 実行するとその文の結果が保持される
  • 結果が得られないような場合( var x, for文など)はEmpty(結果なし)となる。最終結果がEmptyの場合undefinedに変換される
  • 対話環境であるREPLだとこの文の結果が出力として表示される



ということらしいです。
つまり出力されていたundefinedは変数宣言でEmpty -> undefinedとなった文の結果だったんですね。
Javascriptを触り始めて,すぐ言語仕様までたどることになるとは思いませんでした!言語仕様の世界奥深い...


キーワード: JavaScript, REPL, Undefined, 関数宣言