以前の回答でも書きましたけど、Node のプロンプトは、打ち込んだ内容を評価して、その処理を行い、最後にその評価値を出力します。
ubuntu@ubunt-xenial:~$ node > var num = 555; undefined " var 宣言は値を持っていないので、undefined > num 555 " num を評価した値(数値の 555) > console.log(num); 555 " console.log() の実行結果 undefined " console.log() の評価値(戻り値)で、値は undefined > var num2; " 変数宣言だけ undefined " var 宣言は値を持っていないので、undefined > num2 = 999; 999 " 代入文を評価した値は、その代入した値になる > num2 999 " 変数を評価すると、その代入した値になる >
この Node のプロンプトは REPL という Node.js の組み込みモジュールが処理しています。
https://nodejs.org/api/repl.html
を繰り返します。
(3) の評価した値をコンソールを出力するときに色がつくのは、この REPL の機能です。
console.log(num) の後の 555 が白いのは、console.log() 自体には色をつける機能が無いからです。
REPL を実行するときに、オプションを指定することができて、色をつけなくすることも可能です。
ubuntu@ubunt-xenial:~$ cat > myrepl.js let repl = require('repl'); repl.start({useColors: false)}); ^D ubuntu@ubunt-xenial:~$ node myrepl.js > var num = 555; undefined " 色がついてない > num 555 " 色がついてない >
myrepl.js というスクリプトは、REPL を色なしで実行する、という内容です。
変数の宣言は、それ自体、値を持っていません。
あまり悩むところではなくて、そう決めたから、というだけのことです。
関数(console.log はメソッドですが)の呼び出しの場合、その評価値は関数の戻り値です。
2017/12/24 16:32:28宣言と、変数の評価値と、関数の評価値が一緒くたになっていて、分けがわからなくなっていたいみたいです。おかげさまで、霧が晴れてきましたー! ありがとうございます。
2017/12/24 16:54:26