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

330
Vistas
ReferenceError para variables definidas

estoy desconcertado Me imagino que he pisado algo de JavaScript esotérico, pero no sé qué es.

el codigo es

 processMessage(ws, json){ let msg = JSON.parse(json); console.log(`Message(${msg.type}): ${msg.data}`); console.log("Available games: " + msg.data); // Normally isn't here, put it in to make sure I wasn't going crazy switch (msg.type){ case "welcome": console.log("Welcome received. Requesting available games."); let msg = { "type":"game list", "data":null }; ws.send(JSON.stringify(msg)); break; case "restore": break; case "game list": console.log("Available games: " + msg.data); break; case "create console": break; } }

Genera esta salida.

 Message(welcome): undefined MainUI.js:94:21 Available games: undefined MainUI.js:95:21 Welcome received. Requesting available games. MainUI.js:98:29 Message(game list): The Office MainUI.js:94:21 Available games: The Office MainUI.js:95:21 Uncaught ReferenceError: can't access lexical declaration 'msg' before initialization MainUI.js:109:21 processMessage http://localhost:8000/MainUI.js:109 onmessage http://localhost:8000/MainUI.js:44 loaded http://localhost:8000/MainUI.js:42 onload http://localhost:8000/:1

Estoy bastante seguro de que la salida tiene msg , o sus propiedades, a las que se accede 1,2,3...4 veces antes de que se produzca el error.

Aaaaaand, acabo de encontrar la causa. Sabía que era mi culpa pero ahí está lo esotérico.

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

0

Dentro del propio interruptor, puse

 case "welcome": console.log("Welcome received. Requesting available games."); let msg = { "type":"game list", "data":null }; ws.send(JSON.stringify(msg)); break;

Ese segundo let msg , en lugar de proporcionar un error como 'msg' has already been declared , de alguna manera confunde al intérprete al pensar que msg aún no se ha declarado. Eliminar let y solo tener msg = hace que el error desaparezca.

Si alguien lee esto y tiene una referencia para explicar la razón por la que esto sucede, realmente agradecería que agregara un comentario con un enlace.

over 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