Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

115
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda