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

110
Vistas
¿Por qué (var a = b = 1;) es igual a (var a = 1; b = 1;) en javascript?

Cuando aprendía JavaScript, encontré un problema con el izado, es decir, si ejecuta el código a continuación, ¿qué obtendrá?

 f1(); console.log(b); console.log(a); function f1() { var a = b = 1; console.log(a); console.log(b); }

La respuesta es que obtiene tres 1 y un error que tiene sentido debido a la elevación. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var

Con base en el resultado, puedo inferir que var a = b = 1; es igual a var a = 1; b = 1;

Mi problema es ¿Por qué?

Intenté buscarlo en Google, pero parece que no hay una explicación sobre el orden en que se ejecutan var y '='. Te agradecería que me mostraras como la var a = b = 1; se ejecuta paso a paso.

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

0

Porque la asignación es una expresión que se evalúa al valor asignado. Entonces esta operación:

 b = 1

no solo asigna el valor de 1 a b sino que también la expresión completa se evalúa como el valor de 1 . Dado que es una expresión que se evalúa como un valor, se puede usar en cualquier momento que se necesite un valor.

Esto necesita un valor:

 var a = (something)

Entonces puedes usar cualquier expresión, por ejemplo:

 var a = (b = 1)

Y los paréntesis son innecesarios ya que la asignación a no ocurrirá hasta que se evalúe la expresión y se produzca un valor:

 var a = b = 1

Lo que no funcionaría es declarar y asignar como una expresión. Por ejemplo:

 var a = (var b = 1)

Porque la declaración no es una expresión, es una declaración . Las declaraciones se pueden considerar como "una línea de código" y no se pueden colocar en el medio de otro código.

Puede probar esto en las herramientas de depuración de su navegador ingresando el código directamente en la consola. Si haces esto:

 var a = 1

La consola imprimirá undefined , porque la declaración no produjo ningún valor (aunque asignó un valor a a ). Si haces esto:

 b = 1

La consola imprimirá 1 porque la expresión produjo un valor (además de asignar un valor a b ).


Con respecto al resto del código que se prueba en la pregunta, la diferencia clave entre a y b es que a se declara y, por lo tanto, tiene un alcance específico , mientras que b no se declara y, por lo tanto, tiene una propiedad predeterminada en el objeto de window al que se puede acceder desde cualquier lugar. .

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