Está en la página 1de 3

********************** La vieja var ***********************

1: Var no tiene alcance (Visibilidad) de bloques

1: Var ignora los bloques de codigo

if(true) {

var test = true;

alert(test) // true

2: Let solo es visible dentro de los bloques

if(true) {let test = true}

alert(test) // Error

3: Var tampoco puede ser local ni en los bloques ni en los bucles

4: Si un bloque de codigo esta dentro de una funcion, var se vuelve

una variable a nivel de funcion

5: Var atraviesa if, for u otros bucles, porque anteriormente los bloques

en javascript no tenian ambientes lexicos

2: Var tolera redeclaraciones

1: Declarar la misma variable con let en el mismo entorno dara un error

let prueba;

let prueba; // error prueba ya fue declarado

2: Con var podemos redeclarar una variable muchas veces

var prueba = 30;

var prueba = 20; // 20

3: Las variables var pueden ser declaradas debajo del lugar en donde se usan
1: Las variables var son procesadas cuando se inicializa la funcion o el script para las
globales

2: En pocas palabras las variables var son definidas desde el inicio de la funcion o script
no importa donde este declarada, asumiendo que no esta en una funcion anidada

prueba = 30; var prueba;

alert(prueba) // es lo mismo que esto -> prueba = 30;

var prueba alert(prueba)

3: Como los bloques de codigo son ignorados podria hacer esto

prueba = 30;

if(false) {var prueba}

alert(prueba);

Esto se llama hoisting (Elevamiento)

4: Todas las variables var son "Hoisted" (Elevados) hacia el tope de la funcion

1: En el ejemplo anterior if(else) nunca se ejecuta pero eso no importa porque


el var dentro es procesado al iniciar la funcion entonces cuando lo asigno la
varible ya existe porque se eleva

5: Las declaraciones son hoisted (elevadas), pero las asignaciones no

alert(prueba) // undefined la variable existe porque se eleva pero no esta


asignada

var prueba = 20;

Esto porque tiene dos acciones( la declaracion var, y la asignacion = )

Las declaraciones son procesadas al inicio de la funcion (Hoisted) pero la


asignacion siempre se hace en el lugar donde aparece, el ejemplo anterior
seria asi

var prueba;

alert(prueba); // undefined la variable existe pero no esta asignada

prueba = 20;
4: IIFE

1: Es una funcion que se llama inmediatamente, y simula los entornos lexicos

2: Anteriaormente no habia visibilidad de bloques y los programadores intentaron


emularla y crearon el IIFE

(function() {

//codigo

})(); // se llama directamente

3: Los parentecis se le colocan para decirle a javascript que la funcion es creada en


contexto de otra exprecion

1: y lo de alli exprecion de funcion que no necesita un nombre, y puede ser


llamada inmediatamente

2: se le colocan tambien parentecis porque sino lo reconoce como una


declaracion de funcion y las declaracion de funcion necesitan un nombre y no
se pueden llamar inmediatamente

También podría gustarte