¿Los términos "propiedad global" y "variable global" son sinónimos?

El objeto global sirve como el entorno léxico de nivel superior (la parte superior de la cadena de alcance, si lo desea). Esto significa que se puede acceder a las propiedades globales a través de referencias directas (variables similares):

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

Esto también significa que se puede acceder a las variables globales a través de referencias de propiedad:

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

Ahora, en base a la información anterior, parecería que sería apropiado usar los términos "variable global" y "propiedad global" de manera intercambiable, lo que significa que ambos términosrepresentan exactamente el mismo conjunto de enlaces globales.

Sin embargo, hay dos diferencias entre una variable global creada usandovar ,p.ej.var foo = 1;y una propiedad global creada a través de una asignación, por ejemplo,this.foo = 1;:

Las variables globales sonde forma estática, mientras que las propiedades globales sonagregado dinámicamente al entorno global:

foo // => undefined
bar // throws ReferenceError

var foo = 1;
this.bar = 1;

Así, las variables globales están ligadasantes de evaluación del programa, mientras que las propiedades globales están vinculadasdurante Evaluación del programa, cuando la tarea es evaluada.

Las variables globales no son configurables, es decir, no se pueden eliminar (más específicamente, sus enlaces correspondientes no se pueden eliminar del entorno posteriormente), mientras que las propiedades globales se crean a través de la asignaciónson configurable

// 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

Dicho esto, se debe tener en cuenta que es posible crear propiedades globales no configurables:

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

Ahora, en base a esta nueva información, se podría decir que solo las vinculaciones globales de ámbito estático pueden denominarse propiedades globales y variables globales, mientras que las vinculaciones globales agregadas dinámicamente son simplemente propiedades globales, pero no variables globales, lo que significa que el término "global variable "representaun subconjunto del conjunto representado por el término "propiedad global", como en:

Todas las variables globales son propiedades globales
Sólo las propiedades globales de ámbito estático son variables globales

Entonces, ¿qué interpretación es correcta? ¿Ambos términos representan el mismo conjunto de enlaces, o es uno un subconjunto del otro?

LA PREGUNTA

Entiendo el término "propiedad global": una propiedad global es una propiedad del objeto global. Sin embargo, el término "variable global" parece serambiguo. Algunos lo usan como sinónimo de "propiedad global", mientras que otros lo definen como una propiedad global que se ha definido a través de unvar declaración. El propósito de mi pregunta es determinar cuál de estos dos significados es correcto

Respuestas a la pregunta(2)

Su respuesta a la pregunta