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

139
Vistas
¿Por qué no funciona este one-liner que crea una matriz y la empuja?

Cuando ejecuto este código, funciona, como era de esperar:

 var b = {} b['foo']=[] b['foo'].push(1)

Pero cuando trato de hacer esto como una sola línea, así:

 var b = {} (b['foo']=[]).push(1)

Lanza: Cannot set properties of undefined (setting 'foo') , aunque b está muy claramente definido.

¿Alguien podría explicar este comportamiento? Gracias por adelantado.

Editar: por alguna razón, agregar el punto y coma soluciona el problema, lo que confirma que el compilador de hecho estaba tratando de ejecutarlo como una función. Pero ahora tengo otra pregunta: ¿Por qué arroja un error que dice que b no está definida, en lugar de que b no es una función?

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

0

Como señaló Reyno, esto se analiza como

 var b = {}(b['foo']=[]).push(1)

dado que no hay punto y coma que delimite var b = {} y (b['foo']=[]).push(1) , por lo tanto, se aplican las reglas de inserción automática de punto y coma . La pregunta que queda es por qué esto arroja

Cannot set properties of undefined (setting 'foo')

más bien que

Uncaught TypeError: {} is not a function

que debería lanzarse para {}() . La razón de esto es que

 var b = {}(b['foo']=[]).push(1)

es equivalente a

 var b; b = {}(b['foo']=[]).push(1)

El lado derecho de la asignación se evalúa primero, por lo que antes de realizar la llamada, evalúa b['foo'] para evaluar la asignación interna, pero b no está undefined , lo que genera el error Cannot set properties of undefined (setting 'foo') .

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