Platzi
Platzi

Suscríbete a Expert y aprende de tecnología al mejor precio anual.

Antes:$249
$209
Currency
Antes:$249
Ahorras:$40
COMIENZA AHORA
2

SCOPE Apuntes EXPLICADOS

SCOPE

¿Qué es Scope y cómo funciona?
El contexto actual de ejecución. El contexto en el que los valores y las expresiones son “visibles” o pueden ser referenciados.

Si una variable u otra expresión no está “en el Scope- alcance actual”, entonces no está disponible para su uso.

Los Scope también se pueden superponer en una jerarquía, de modo que los Scope secundarios tengan acceso a los ámbitos primarios, pero no al revés.

Global Scope : Las variables NO están dentro de funciones o bloques, por lo tanto se puede acceder a ellas de manera global.

// Scope Global
`var hello = "HELLO :)";
var hello = "HELLO +:("; // al correr el codigo, puede observarse que al definir 2 variables con el mismo nombre: se reescribe la segunda variable sobre la primera.
let world = "Hello World";
let world = "Hello new let"; //Por otra parte, let no permite reeasignar un nuevo valor con el nombre asignado anteriormente.
const helloWorld = "Hello World!!"; // const tampoco permite reasignar nuevos valores al nombre asignado anterior mente.

const anotherFunction = () => {
    console.log(hello);
    console.log(world);
    console.log(helloWorld);
}

anotherFunction (); //Llamado de la función`

NOTA:
-No es para nada buena practica definir variables de uso
global dentro de bloques de codigo o dentro de funciones.
-En el uso de variables la unica manera de reasignar variables es mediante el uso de var puesto que let y const no lo permitirá.

Local Scope : Las variables SI estan dentro de bloques de codigo o funciones, por lo cual se puede acceder a ellas SOLO en el bloque de codigo o la funcion. Pues fuera de la función o el bloque de codigo, esta variable no existirá.

Scope Local en Bloques.

EJEMPLO 1
const helloWorld = () => {
    const hello = 'hello World';
    console.log(hello);
}
helloWorld();
console.log(hello); // No podra acceder a la const hello porque esta definida de manera local mas no de manera global

EJEMPLO 2
var scope = "I'm just global"
const functionScope = () => {
    var scope = " I'm just local"
    const func = () => {
        return scope
    }
    console.log(func());
}
functionScope (); //Retorna el scope local
console.log (scope); // Retorna el scope global

FUNCTION LOCAL SCOPE

var scope = "I'm just global"
const functionScope = () => {
    var scope = " I'm just local"
    const func = () => {
        return scope
    }
    console.log(func());
}
functionScope ();
console.log (scope);


const fruits = () => {
    var fruit = "apple";
    console.log(fruit);
}
fruits ();

const numbrerFunction = () => {
    var x = 1; //este valor se borrará pues sera reescrito por el siguiente valor de X
    var x = 2;
    var y = 1;//este valor se borrará pues sera reescrito por el siguiente valor de y
    var y = 2;
    console.log (x)
    console.log (y)
}
numbrerFunction ();

BLOCK LOCAL SCOPE

EJEMPLO 1

		const colors = () => {
		if (true) {
   		var color1 = "Blue";
    let color2 = "Yellow";
    const color3 = "Green";
    console.log(color2);//Debe estar dentro del Scope del bloque para ser llamados, de lo contrario no se podría
    console.log(color3);//Debe estar dentro del Scope del bloque para ser llamados, de lo contrario no se podría
}
console.log(color1); // Sí podra acceder porque var permite acceder dentro de la funcion local definida. Sigue siendo el scope local.
}
colors();

EJEMPLO 2

Caso let

let x = 1;
    {
        let x = 2 
        console.log (x) //Al estar dentro del bloque retornará 2
    }
    console.log(x); // Al estar fuera del bloque retornará 1

Caso var

    var y = 1;
    {
        var y = 2 
        console.log (y) //Retornará 2
    }
    console.log(y); //Reescribe el valor del bloque definido anteriormente.

EJEMPLO 3

const anotherFunction = () => {
    for (let i = 0; i < 10; i++) {
        setTimeout(() => {
        console.log(i);
        }, 1000);
    };
};
anotherFunction(); //Al poner let en lugar de var hace que por cada iteración muestre el valor del bloque ejecutado. Si se pusiera var reescribiría todas los resultados por el ultimo valor de var.

NOTA: Al poner let en lugar de var hace que por cada iteración muestre el valor del bloque ejecutado.
Si se pusiera var reescribiría todas los resultados por el ultimo valor de var.

El setTimeoy creo que lo utiliza para darle un tiempo determinado para que temine de hacer todo el bucle for y después imprima el console.log con el ultimo valor de var.

Al utilizar let se obtiene el valor con el retraso pero sin reescribirse.

Escribe tu comentario
+ 2