Czy terminy „własność globalna” i „zmienna globalna” są synonimami?

Obiekt globalny służy jako środowisko leksykalne najwyższego poziomu (na górze łańcucha zasięgu, jeśli chcesz). Oznacza to, że dostęp do właściwości globalnych można uzyskać poprzez bezpośrednie odwołania (takie jak zmienne):

// global code
this.foo = 1;        // creating a global property
foo                  // accessing the global property via a direct reference

Oznacza to również, że do zmiennych globalnych można uzyskać dostęp poprzez odwołania do właściwości:

// global code
var foo = 1;         // creating a global variable
this.foo             // accessing the global variable via a property reference
INTERPRETACJA 1

Teraz, opierając się na powyższych informacjach, wydaje się, że właściwe byłoby używanie terminów „zmienna globalna” jako „własność globalna” zamiennie, co oznacza, że ​​oba terminyreprezentują dokładnie ten sam zestaw powiązań globalnych.

Istnieją jednak dwie różnice między tworzoną zmienną globalnąvar ,na przykład.var foo = 1;oraz globalna własność utworzona poprzez przypisanie, np.this.foo = 1;:

Zmienne globalne tostatycznie ograniczony, podczas gdy właściwości globalne sądynamicznie dodawane do globalnego środowiska:

foo // => undefined
bar // throws ReferenceError

var foo = 1;
this.bar = 1;

Zatem zmienne globalne są powiązaneprzed ocena programu, podczas gdy właściwości globalne są powiązanepodczas ocena programu, gdy zadanie jest oceniane.

Zmienne globalne nie są konfigurowalne, tj. Nie można ich usunąć (dokładniej, odpowiadających im powiązań nie można później usunąć ze środowiska), podczas gdy właściwości globalne utworzone za pomocą przypisaniasą konfigurowalny.

// the names "foo" and "bar" are bound to the global environment
var foo = 1;
this.bar = 1;

// the binding "bar" can be removed from the global environment subsequently 
delete this.bar; 

// the binding "foo" cannot be removed subsequently

Należy jednak zauważyć, że możliwe jest tworzenie nie konfigurowalnych właściwości globalnych:

Object.defineProperty( this, 'bar', { value: 1 }); // non-configurable by default
INTERPRETACJA 2

Teraz, w oparciu o te nowe informacje, można powiedzieć, że tylko powiązania globalne o zasięgu statycznym mogą być określane zarówno jako właściwości globalne, jak i zmienne globalne, podczas gdy dynamicznie dodawane powiązania globalne są jedynie właściwościami globalnymi, ale nie zmiennymi globalnymi, co oznacza, że ​​termin „globalny zmienna „reprezentujepodzbiór zestawu reprezentowanego przez termin „własność globalna”, jak w:

Wszystkie zmienne globalne są właściwościami globalnymi
Tylko właściwości globalne o zasięgu statycznym są zmiennymi globalnymi

Która interpretacja jest prawidłowa? Czy oba terminy reprezentują ten sam zestaw powiązań, czy też jeden z nich jest podzbiorem drugiego?

PYTANIE

Rozumiem termin „własność globalna” - właściwość globalna jest własnością obiektu globalnego. Jednak termin „zmienna globalna” wydaje się byćdwuznaczny. Niektórzy używają go jako synonimu „globalnej własności”, podczas gdy inni definiują ją jako globalną właściwość, która została zdefiniowana przez avar komunikat. Celem mojego pytania jest określenie, które z tych dwóch znaczeń jest poprawne

questionAnswers(2)

yourAnswerToTheQuestion