Sie können die global
object in Node.js wissen:Was ist das Stammobjekt in Node.js
{Objekt} globales Namespace-Objekt.
In Browsern ist der Top-Level-Bereich der globale Bereich. Das bedeutet, dass in Browsern, wenn Sie sich in der globalen Gültigkeitsbereichsvariable befinden, etwas eine globale Variable definiert. Im Knoten ist dies anders. Der Bereich der obersten Ebene ist nicht der globale Bereich. var etwas in einem Node-Modul ist lokal für dieses Modul.
Jetzt stolperte ich über das root
Objekt, das nirgendwo dokumentiert zu sein scheint.
Obwohl es scheint, dass ich root
die gleiche Art und Weise wie global
verwenden können:
test1.js
foo = 'bar'; // foo is defined in the global scope (no var in front of foo)
test2.js
require('./test1.js');
console.log(root.foo);
In der Shell:
$ node test2.js
bar
Wenn ich global
und root
in der Shell inspiziere, sehen sie gleich aus. Versuchen:
$ node
> global
...
> root
...
So scheint es, dass root
ist die gleiche wie global
. Aber warum die Redundanz? Warum ist root
nicht dokumentiert? Ist es veraltet?
Knoten; 'root === global; // true' – jAndy
Das Ergebnis von 'true' sagt uns nur, dass beide Namen auf die gleiche" Objektreferenz "verweisen. – jAndy
@Lego aber Referenzgleichheit ist ein stärkeres Ergebnis als tiefe Gleichheit ... – OrangeDog