Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

203
Views
Error de referencia frente a error de sintaxis durante la compilación de JS

Estaba investigando un poco sobre el v/s compilado interpretado. Encontré este artículo que dice...

 console.log("Hello World"); oops oops;

Este código no generará Hello World porque JS está compilado y debido a oops oops; El compilador JS arrojará un error que seguramente lo hace. SyntaxError: Unexpected identifier

Pero si elimino el segundo oops , es decir

 console.log("Hello World"); oops;

Este código aún arroja un error, aunque es un error diferente ReferenceError: oops is not defined , pero primero escribe Hello World en la consola.

Entiendo los dos errores. Entonces, cuando hay un error de sintaxis , el proceso de compilación se detiene porque no puede procesar la sintaxis incorrecta y no puede producir un AST (Árbol de sintaxis abstracta) por lo que entiendo. Por lo tanto, no hay código de bytes. Pero cuando se trata de un error de referencia , ¿cómo se puede compilar?

Lo siento si estoy haciendo esta pregunta en el intercambio equivocado. Si es así, solo hágame saber el foro correcto donde debería hacer esta pregunta.

Además, sé que es un comportamiento inesperado, y no debería preguntar por qué el código roto actúa de la forma en que lo hace. Tengo curiosidad.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

El primer paso es tokenización/escaneo/lexing:

 console.log("Hello World"); oops oops;

se "divide" en

 console . log ( "Hello World" ) ; oops oops ;

Luego viene el analizador (que valida/analiza un flujo de tokens en un árbol).

Ve esto como una declaración (una llamada de función):

 console . log ( "Hello World" ) ;

Entonces ve esto:

 oops oops;

Lo cual es una sintaxis no válida y, por lo tanto, tiene un error de sintaxis.

En su segundo ejemplo, esto es solo:

 oops;

Que es una sintaxis válida.

A continuación, después de crear este árbol de algún tipo, hay JIT y muchos otros pasos, pero solo nos interesa la ejecución.

Ejecuta console.log perfectamente bien, pero luego ve que hay un identificador que no está definido. De ahí el error de referencia.

Entonces, en resumen, JavaScript se interpreta (también se compila justo a tiempo) y, debido a que se interpreta, interpreta su código "línea por línea". Interpreta y ejecuta console.log, luego intenta interpretar y ejecutar oops; , lo que da como resultado un error.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!