Javascript Avanzado en Español
  • Introducción
  • I- Up & Going
    • 0- Prefacio
    • 1- En la programación
      • 1.1 Código
      • 1.2 Inténtalo tú mismo
      • 1.3 Operadores
      • 1.4 Valores y Tipos
      • 1.5 Comentarios del Código
      • 1.6 Variables
      • 1.7 Bloques
      • 1.8 Condicionales
      • 1.9 Bucles
      • 1.10 Funciones
      • 1.11 Scope (Ámbito)
      • 1.12 Práctica
      • 1.13 - Revisión
    • 2- En Javascript
      • 2.1 Valores y Tipos
      • 2.2 Variables
      • 2.3 Condicionales
      • 2.4 Modo estricto
      • 2.5 Funciones como Valores
      • 2.6 Identificador This
      • 2.7 Prototypes
      • 2.8 Lo Viejo y Lo Nuevo
      • 2.9 Non-JavaScript
      • 2.10 Revisión
    • 3- En YDKJS
      • 3.1 Scope & Closures
      • 3.2 This & Object Prototypes
      • 3.3 Tipos & Gramática
      • 3.4 Async & Performance
      • 3.5 ES6 & Más allá
      • 3.6 Revisión
  • II- Scope & Closures
    • 0- Prefacio
    • 1- ¿Qué es el Scope?
      • 1.1 Teoría del Compilador
      • 1.2 Entendiendo el Scope
      • 1.3 Scopes Anidados
      • 1.4 Errores
      • 1.5 Revisión
    • 2- Lexical Scope
      • 2.1 Tiempo de Lex
      • 2.2 Trucos léxicos
      • 2.3 Revisión
    • 3- Function vs. Block Scope
      • 3.1 Ámbito de las funciones
      • 3.2 Ocultación en el ámbito común
      • 3.3 Funciones como ámbitos
      • 3.4 Bloques como ámbitos
      • 3.5 Revisión (TL; DR)
    • 4- Hoisting
      • 4.1 ¿El Huevo o la Gallina?
      • 4.2 El compilador pega de nuevo
      • 4.3 Funciones Primero
      • 4.4 Revisión
    • 5- Scope Closure
      • 5.1 Ilustración
      • 5.2 Nitty Gritty
      • 5.3 Ahora puedo ver
      • 5.4 Loops + Closure
      • 5.5 Módulos
      • 5.6 Revisión
    • 6- Scope Dinámico
    • 7- Ámbito de bloque de Polyfilling
      • 7.1 Traceur
      • 7.2 Bloques implícitos vs. explícitos
      • 7.3 Rendimiento
    • 8- Lexical-this
  • III- this & Object Prototypes
    • 0- Prefacio
    • 1- this o That?
      • 1.1 ¿Porque this?
      • 1.2 Confusiones
      • 1.3 ¿Que es this?
      • 1.4 Revisión
    • 2- this, todo tiene sentido ahora!
      • 2.1 Sitio de llamada
      • 2.2 Nada más que reglas
      • 2.3 Todo en orden
Powered by GitBook
On this page

Was this helpful?

  1. II- Scope & Closures
  2. 1- ¿Qué es el Scope?

1.5 Revisión

El Scope es un conjunto de reglas que determina dónde y cómo se puede buscar una variable (identificador). Esta búsqueda puede ser con el propósito de asignar a la variable, que es una referencia LHS (izquierda), o puede ser con el propósito de recuperar su valor de referencia, que es un RHS (lado derecho).

Las referencias LHS resultan de las operaciones de asignación. Las asignaciones relacionadas con el ámbito pueden ocurrir con el operador = o pasando argumentos a (asignar a) parámetros de función.

El Motor de JavaScript primero compila el código antes de que se ejecute, y al hacerlo, divide declaraciones como var a = 2; En dos pasos separados:

  1. Primero, var a para declararlo en ese ámbito. Esto se realiza al principio, antes de la ejecución del código.

  2. Después, a = 2 para buscar la variable (referencia LHS) y asignarla si se encuentra.

Las consultas de referencia de LHS y RHS comienzan en el ámbito actualmente en ejecución, y si es necesario (es decir, no encuentran lo que buscan allí), siguen su camino hasta el ámbito anidado, un ámbito (piso) a la vez, buscando el identificador, hasta que lleguen al global (piso superior) y se detengan, y lo encuentren, o no lo hagan.

Las referencias no encontradas de RHS dan lugar a la emisión de ReferenceErrors. Las referencias no cumplidas de LHS resultan en una variable global automática creada implícitamente de ese nombre (si no en "Strict Mode" [^note-strictmode]), o un ReferenceError (si en "Strict Mode" [^note-strictmode]).

Respuestas del Examen

function foo(a) {
    var b = a;
    return a + b;
}

var c = foo( 2 );
  1. Identifique todas las busquedas LHS (hay 3!).

    c = .. , a = 2 (asignación implícita de parámetros) y b = ..

  2. Identificar todas las consultas RHS (hay 4!)

    foo(2.. , = a; , a + .. y .. + b

Previous1.4 ErroresNext2- Lexical Scope

Last updated 6 years ago

Was this helpful?

[^note-strictmode]: MDN:

Strict Mode