Kein Unterschied. Sie haben beide den gleichen Effekt (Im Browser window
befindet sich der globale Kontext 1 ).
window.foo = "bar"
setzt die Eigenschaft foo
auf window
.
foo = "bar"
zeigt entweder einen Tippfehler oder absichtlich global an.
Da ich noch einmal überprüfen muss, ob es sich um einen Tippfehler handelt oder nicht, finde ich es persönlich besser lesbar , ihn window.foo
direkt einzustellen .
Außerdem ist im strengen ES5-Modus foo = "bar"
eine unzulässige Zuweisung, da sie foo
nicht deklariert ist und a auslöst Error
.
Bearbeiten:
Wie in den Kommentaren erwähnt, foo = "bar"
wird die Gültigkeitsbereichskette für die Variable foo
vollständig durchsucht und neu zugewiesen, "bar"
wenn sie gefunden wird. Wird es nicht gefunden, wird eine neue globale Variable erstellt.
Außerdem weisen window.foo = "bar"
Sie einem Objekt nur eine Eigenschaft zu, die mit gelöscht werden kann delete window.foo
.
In ES5 Strict - Modus ist es ungültig zu delete
einer Variablen.
1 In anderen Umgebungen wie node.js und Web Workers gibt es möglicherweise einen anderen Namen für das globale Objekt und ist window
möglicherweise überhaupt nicht vorhanden. Node.js verwendet global
und Web Worker verwenden self
.