Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

162
Vistas
¿Por qué no se puede acceder al alcance global en este caso?

Me enfrenté a este problema recientemente. Podría pasar el problema, pero no entendí el concepto detrás de él. Si prueba el fragmento, verá lo que está pasando. ¿Alguien puede explicarlo?

 function func1() { console.log('Func1 executed.'); }; const func2 = () => { console.log('Func2 executed.'); }; const test = () => { window['func1'](); //Working window['func2'](); //Not working };
 button { width: 200px; padding: 20px; font-size: large; cursor: pointer; border: 0; background: linear-gradient(to top right, gray, silver); color: white; border-radius: 7px; box-shadow: 0px 5px 7px silver; text-shadow: 0px 2px 2px rgba(0,0,0,0.5); }
 <button onclick='test()'>Execute</button>

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

La respuesta directa es:

Las variables globales inicializadas con let y const no se convierten en propiedades de window .

Ver:

const

Las constantes globales no se convierten en propiedades del objeto window , a diferencia de las variables var .

Fuente: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const

y:

let

Al igual que const , let no crea propiedades del objeto window cuando se declara globalmente (en el ámbito superior).

Fuente: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let

about 4 years ago · Juan Pablo Isaza Denunciar

0

El problema es que realmente está llamando a un valor/variable ( const func2 = podría terminar con un int, por ejemplo). Debe pasar una función en sí misma a la window[Functioname]() .

Puede hacer esto a través de llamadas de función de segundo grado, consulte a continuación.

Bonito botón por cierto.

 function func1() { console.log('Func1 executed.'); }; const func2 = () => { console.log('Func2 executed.'); }; function func3(){ func2(); } const test = () => { window['func1'](); //Working window['func3'](); //Working window['func2'](); //Not working };
 button { width: 200px; padding: 20px; font-size: large; cursor: pointer; border: 0; background: linear-gradient(to top right, gray, silver); color: white; border-radius: 7px; box-shadow: 0px 5px 7px silver; text-shadow: 0px 2px 2px rgba(0,0,0,0.5); }
 <button onclick='test()'>Execute</button>

about 4 years ago · Juan Pablo Isaza Denunciar

0

No tengo mucha experiencia con JS, pero creo que es porque la primera es en realidad una función que se puede reutilizar varias veces, mientras que la segunda es la función lambda con el propósito de devolver y almacenar un valor (pero no volver a calcular) en la func2 var.

Corrígeme si me equivoco.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda