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

159
Vistas
Cómo determinar de forma segura si una variable de ámbito de bloque está definida

Si el inicializador de una variable const o let arroja un error, acceder a esa variable arroja un ReferenceError , incluso cuando se verifica su tipo a través de typeof .

 // Foo.js class Foo { constructor() { /* Something goes wrong and throws... */ } } const gFoo = new Foo(); // Throws an error
 // Elsewhere... console.log(typeof gFoo); // throws ReferenceError: foo is not defined

¿Hay otra forma de probar si gFoo se inicializó con éxito, o tengo que envolver un typeof check en un bloque try / catch ?

 let isInitialized = false; try { if (typeof foo != 'undefined') isInitialized = true; } catch (e) {} // ugly but it works

Principalmente, me sorprende que typeof pueda arrojar un ReferenceError .

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Cuando se lanza un error, la ejecución de la función actual se detiene (las declaraciones posteriores al lanzamiento no se ejecutarán) y el control pasará al primer bloque catch en la pila de llamadas. En ese momento, la variable no se inicializa, lo que genera la excepción ReferenceError.

Entonces, para responder a su pregunta, siempre que sepa que hay posibles errores, asegúrese de envolverlo siempre dentro de los bloques try catch.

Con su caso anterior, dado que el error podría ocurrir dentro de la función asignada a foo, debería tener el bloque try catch allí; Algo como:

 const foo = (() => { try { // Do whatever throw Error(); // return value to assign to foo } catch(err) { // Log error for monitoring // return undefined } })(); if (foo) { // Do something with foo } else { // Do something if foo errored }
about 4 years ago · Santiago Trujillo 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