次のtest.jsファイルには2行の出力があり、各行はグローバルオブジェクトとthis
の厳密な等価性をテストします。ノードのグローバルコンテキスト===「this」は時々、サンプル内でのみですか?
var c = require("console");
console.log(this === global);
(function() {
console.log(this === global);
})();
私はnode.exe test.js
を使用してコマンドラインからこのファイルを実行すると、私は次のような出力を得る:
を偽
真
しかし、私は内側からtest.jsをロードするときノードREPLそれは私に別の出力を提供します:
真
真
これは、同じスクリプトのこれらの二つの実行シナリオの出力の差の原因は何ですか?REPL
PS C:\Programming> node
> .load test.js
.load test.js
> var c = require("console");
undefined
> console.log(this === global);
true
undefined
>
> (function() {
... console.log(this === global);
... })();
true
undefined
>
> .exit
でスクリプトを読み込むの完全な転写産物でありますか
いずれの場合でも厳密モードは有効ではありません(ノードコマンドラインでは、デフォルトでfalseに設定されています)。コードは'use strict';
で厳密モードを起動しません。
私はWindows 10 x64上でノード5.9.0を使用しています。