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

113
Views
¿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 answers
Answer question

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 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!