Wenn Sie schreiben:
window.dog = 1;
Sie sind explizit eine neue Eigenschaft auf dem globalen window
Objekt erstellen dog
genannt. Wenn es erstellt wird, wird es mit seinem configurable
Schalter erstellt, der auf true
gesetzt wird. Die Tatsache, dass Sie dann
var dog = 6;
erklären nicht die Tatsache ändern, dass die Eigenschaft bereits explizit erstellt.
Wenn Sie erklären:
var cat = 9;
Sie sind implizit eine Eigenschaft zu schaffen cat
auf dem globalen window
Objekt aufgerufen. Auf diese Weise erstellt, hat die Eigenschaft configurable
Schalter auf false
festgelegt.
Der Punkt ist, dass globale Eigenschaften in der Regel eine schlechte Sache sind und in den seltenen Fällen, wenn Sie eine wollen, ist es am besten, es explizit zu sein, aus Gründen der Lesbarkeit, sondern auch (wie Sie herausgefunden haben) größte Flexibilität bei der Arbeit mit ihnen.
'var'-deklarierte Eigenschaften der globalen Objekte sind nicht konfigurierbar, aber die Deklarationen ändern nicht die Eigenschaften der bereits vorhandenen Eigenschaften (' window.dog = 1' vs. nein 'window.cat = ...') – Bergi
... und hättest du all das in ein Skript geschrieben, wären die 'var' Deklarationen gehisst worden, also wären beide Eigenschaften nicht konfigurierbar. – Bergi