[Notas de estudio] Notas de estudio "Objetos variables variables de atributos de contexto de ejecución de JavaScript en profundidad"

¡Un verdadero gran dios puede hablar conocimiento de manera ordenada! , Pararse sobre los hombros de los gigantes para aprender
Dirección de aprendizaje https://github.com/mqyqingfeng/Blog
Declaración: Las imágenes y el contenido se toman del enlace anterior, aquí es solo para grabar notas de aprendizaje, consulte el enlace anterior para la versión completa.

Cuando el código JavaScript ejecuta un código ejecutable (código ejecutable), creará un contexto de ejecución correspondiente (contexto de ejecución)

Para cada contexto de ejecución, hay tres atributos importantes:
-Objeto variable (objeto variable, VO)
-Cadena de alcance (cadena de alcance)
-este

Objeto variable

Enfoque: el proceso de crear objetos variables

Los objetos variables son ámbitos de datos relacionados con el contexto de ejecución, y almacenan variables y declaraciones de funciones definidas en el contexto.

Los objetos variables en diferentes contextos de ejecución son ligeramente diferentes.

El objeto variable en el contexto global es la ventana del objeto global

En el contexto de la función , se usa un objeto de activación (AO) para representar un objeto variable.

El objeto activo y el objeto variable son en realidad la misma cosa, pero el objeto variable está estandarizado o implementado por el motor y no se puede acceder a él en el entorno JavaScript. Solo al ingresar a un contexto de ejecución, el objeto variable del contexto de ejecución será Activación, por lo que se llama un objeto de activación, y solo se puede acceder a los objetos variables que se activan, es decir, a los diversos atributos del objeto activo. ??

El objeto activo se crea en el momento en que entra en el contexto de la función, y se argumentsinicializa mediante las propiedades de la función . argumentsvalor del atributo es Argumentsun objeto.

Proceso de ejecución:
1. Ingrese el contexto de ejecución (fase de análisis) 2.
Ejemplo de ejecución de código (fase de ejecución) :

function foo(a) {
    var b = 2;
    function c() {}
    var d = function() {};

    b = 3;
}

foo(1);

Después de ingresar al contexto de ejecución, AO es

AO = {
    arguments: {
        0: 1,
        length: 1
    },
    a: 1,
    b: undefined,
    c: refrence to function c() {},
    d: undefined
}

En la etapa de ejecución del código, el código se ejecutará secuencialmente y el valor del objeto variable se modificará de acuerdo con el código.
Después de ejecutar el ejemplo anterior, el AO en este momento es:

AO = {
    arguments: {
        0: 1,
        length: 1
    },
    a: 1,
    b: 3,
    c: refrence to function c() {},
    d: refrence to FunctionExpression "d"
}

Resumen:
1. La inicialización de objeto variable del contexto global es un objeto global

2. La inicialización del objeto variable del contexto de la función solo incluye objetos Argumentos

3. Al ingresar al contexto de ejecución, se agregarán al objeto variable valores de atributos iniciales tales como parámetros formales, declaraciones de funciones y declaraciones de variables.

4. En la etapa de ejecución del código, el valor del atributo del objeto variable se modificará nuevamente

console.log(foo);

function foo(){
    console.log("foo");
}

var foo = 1;

Imprimirá la función en lugar de indefinida

Esto se debe a que, al ingresar al contexto de ejecución, la declaración de la función se procesará primero y la declaración de la variable se procesará en segundo lugar. Si el nombre de la variable es el mismo que el parámetro formal o la función que se ha declarado, la declaración de la variable no interferirá con las propiedades que ya existen.

Supongo que te gusta

Origin www.cnblogs.com/danker/p/12712973.html
Recomendado
Clasificación