Aprende Inglés, Programación, AI y Ciberseguridad.

Antes:$249

Currency
$209
Suscríbete

Termina en:

05d

08h

50m

17s

2

Scope y Closures

Scope: Es el que se encarga de a que bloque de codigo va acceder una variables.

Local Scope:permite acceder a una variable solamente en este bloque de codigo.

let persona= ()=>{
//local scope
let nombre='victor';return nombre;}//global scope//la variabe nombre esta definida en la funcion osea que se accede a la funcion persona para imprimir la variable
console.log(persona());//este codigo da error por que la variable no esta definida en global scope
console.log(nombre);

Global Scope:el global scope tiene alcance directo a las variables o funciones ya que no se declaran adentro de bloques de codigo.

//Global scopelet numero=18;
//Se accede directamente ala variable ya que se declara enelglobal scope

console.log(numero);

Ambito Lexico: Cuando yo declaro dos variables del mismo tipo las llamo de forma igual como estas pueden convivir en el codigo sin modificar una a la otra, gracias al ambito lexico esto se refiere a que las dos variables pueden convivir en el mismo codigo si una esta declarada en un ambito diferente de la otra.

//Global scopelet nombre='victor';

functionpersona() {
    //local scopelet nombre='carlos';
    return nombre;
}
//imprimira la variable que esta declarada en global scopeconsole.log(nombre);

//imprimira la varible declarada en local scope console.log(persona());

//las dos variables conviven juntas pero en dos ambitos diferentes

Closures: Es una funcion interna que tiene alcance a su funcion padre aun despues de ejecutarse un return.

//funcion padre
const moneyBox = () => {
    let saveCoins = 0//funcion hija
    const countCoins = (coins) => {
        //accede a la variable de la funcion padre
        saveCoins += coins
        console.log(`MoneyBox: $${saveCoins}`)
    }
    return countCoins
}
let myMoneyBox = moneyBox()
myMoneyBox(4)// 4myMoneyBox(6)// 6myMoneyBox(10)// 10

Ambito Lexico en Closure: el closure se puede ejecutar en dos variables distintas y no se afectan entre si.

const buildCount = i => {
    let count = i;
    const displayCount = () => {
      console.log(count++);
    };return displayCount;
  };//hay dos scope
  const myCount = buildCount(1);
  myCount(); // 1
  myCount(); // 2
  myCount(); // 3

  const myOtherCount = buildCount(10);
  myOtherCount(); // 10
  myOtherCount(); // 11

Hoisting
Se refiere a la elevacion de funciones y variables que hace javascript al momento de compilar el codigo.
lista de elevados

  • var = se eleva solo la declaracion

  • function= se eleva completo

  • importo=se eleva completo

  • clases=no se elevan

//esta simple declaracion var a=1//puede ser igula a estavar a;
a=1;
//aqui vemos un ejemplo de como javascript imterpreta la primera declaracion
Escribe tu comentario
+ 2