JavaScriptオブジェクトメソッドの実行結果
実行環境の違いですね。
ブラウザの開発者コンソールでは、実行された最後のステートメントの結果を表示します。
一方で ファイル指定で実行する NodeJS は、ソースコード内にコンソール出力が記述されていない限り、Terminal(コマンドプロンプト)に結果を表示することはありません。
例えば、ブラウザで以下のコードを実行すると、'Hi Jonh'
と console.log() の内容が表示されますが、console.log の返り値(undefined)も続けて表示されるはずです。
javascript
1// test.js
2var person = {
3 firstname: 'Default',
4 lastname : 'Default',
5 greet: function() {
6 return 'Hi ' + this.firstname;
7 }
8}
9
10var john = Object.create(person);
11john.firstname = 'John';
12john.lastname = 'Doe';
13console.log( john.greet() ); // nodeでも console.log() の内容は表示する
このコードをファイルにし、nodeコマンドで実行すると、以下のように console.log() の内容が表示されます。
Terminal
1$ node test.js
2Hi Jonh
NodeJS も console.log を使って簡易的なデバッグができます(通常は debug モジュールが利用されます)
REPL(対話インタプリタ) では、開発者コンソールのように、ステートメントの結果を表示したりもします。
以下、REPLで実行し、ご質問のコードを貼り付けた例
Terminal
1$ node
2Welcome to Node.js v12.12.0.
3Type ".help" for more information.
4> var person = {
5... firstname: 'Default',
6... lastname : 'Default',
7... greet: function() {
8..... return 'Hi ' + this.firstname;
9..... }
10... }
11undefined
12>
13> var john = Object.create(person);
14undefined
15> john.firstname = 'John';
16'John'
17> john.lastname = 'Doe';
18'Doe'
19> john.greet();
20'Hi John'
21> [Ctrl]+[C]
22(To exit, press ^C again or ^D or type .exit)
23> [Ctrl]+[C] (REPLを抜ける)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/02 23:25