Ich habe die folgende test.js-Datei, die zwei Zeilen der Ausgabe ausgibt, prüft jede Zeile für strikte Gleichheit zwischen dem globalen Objekt und this
.Warum ist der globale Kontext des Knotens nur manchmal in einem Beispiel?
var c = require("console");
console.log(this === global);
(function() {
console.log(this === global);
})();
Wenn ich laufen diese Datei aus dem Zeilenbefehl node.exe test.js
ich folgende Ausgabe:
falsch
wahr
Jedoch, wenn ich test.js aus dem Inneren der Last Knoten REPL es mir verschiedene Ausgabe bietet:
wahr
wahr
Dies ist die vollständige Transkript des Skripts in dem REPL Laden
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
Was ist die Ursache der Differenz in der Ausgabe zwischen diesen beide Laufe Szenarien aus dem gleichen Skript?
Der strikte Modus ist in beiden Fällen nicht aktiviert (die Befehlszeile des Knotens setzt standardmäßig strict auf false); Der Code ruft keinen strikten Modus mit 'use strict';
auf.
Ich verwende Knoten 5.9.0 unter Windows 10 x64.