Javascript läuft immer in einem bestimmten globalen Kontext. In einer Browser-Umgebung, bei der es sich um das window-Objekt handelt, fügen Sie es bei der Definition eines globalen Objekts tatsächlich zu window ...
hinzuHier ist eine weitere hervorragende Stackoverflow-Antwort, die erklärt, warum das so ist: Ist das Fenster in Javascript wirklich global?
Was ist der Grund für diese Designentscheidung?
Ich kann das nicht beantworten, wir müssen den Typen fragen, der die Sprache entworfen hat, und das Komitee, das seine Spezifikation pflegt. Aber vielleicht gibt Ihnen das einige Einsichten: intern werden Variablen (lokal oder global) immer in "Lexical Environment" -Objekten gespeichert. Sie sind also immer Eigenschaften und besitzen sogar eigene Eigenschaften (um sie als schreibgeschützt, nicht löschbar usw. zu kennzeichnen).
Die Umgebungsobjekte werden im Browser-JavaScript nicht angezeigt, außer für das globale Objekt (wie in den Kommentaren von sclint hervorgehoben wird, erfordert ECMAScript nicht, dass das globale Variablenobjekt offengelegt wird, das liegt an der Implementierung.)
Es kommt vor, dass entschieden wurde, dass das globale Objekt mit dem Fensterobjekt in Browsern identisch ist. Warum? Auch das kann ich nicht beantworten. Sie haben gerade entschieden, keinen dedizierten global
(oder was auch immer) Bezeichner zu verwenden.
Tags und Links javascript dom