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

212
Vistas
¿Por qué esta es una sintaxis válida en javascript?
const arr = [(firstName = 'hello')]

¿Por qué el código anterior es un código válido en javascript? No entendí por qué esto no arroja ningún error.

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

0

Esto es lo que hace ese código y si es válido.

Ese código hace esto:

 firstName = 'hello'; const arr = ['hello'];

... excepto 'hello' solo se evalúa una vez. (En el caso de un literal como 'hello' , no importa que solo se evalúe una vez, pero lo sería si 'hello' fuera una llamada de función que devolviera una cadena).

Es válido porque:

  • Usar el resultado de una operación de asignación es válido; el resultado de una operación de asignación es el valor que se asigna. Entonces, la expresión firstName = 'hello' da como resultado el valor 'hello' .

  • El operador de agrupación ( () ) se puede usar donde se puede usar cualquier expresión; el resultado de la operación de agrupación es el resultado de la expresión dentro de ella.

  • [x] crea una matriz con x en ella.

  • const arr = /*...*/ crea una constante (una variable de solo lectura) y le asigna el resultado de evaluar la expresión inicializadora (la expresión en el lado derecho de = ).

Entonces, todas las partes son válidas y están ensambladas de manera válida. Se declara el identificador arr ; se evalúa la expresión de asignación firstName = 'hello' , configurando firstName y dando como resultado 'hello' ; la operación de agrupación ('hello') se evalúa dando como resultado 'hello' ; el literal de matriz ['hello'] se evalúa creando una matriz; y la constante arr se inicializa con la referencia de matriz.

Una arruga es que parece que firstName es un identificador no declarado (su código no lo declara en ninguna parte, no hay let firstName o similar). Si realmente no está declarado, entonces esta es una de las desafortunadas peculiaridades de JavaScript en modo flexible: la asignación a un identificador no declarado crea implícitamente una variable global (lo llamo "El horror de los globales implícitos"). Esta es una de las muchas razones para usar el modo estricto ( "use strict" en la parte superior del archivo, o usar módulos nativos de JavaScript ["ESM"]; el cuerpo de una definición de class también es siempre estricto). En modo estricto, asignar a un identificador no declarado es el error que siempre debería haber sido.

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