4 votes

Code JavaScript s'exécutant après le retour

Dans l'exemple suivant, JavaScript semble ignorer complètement mon return et de poursuivre l'exécution du code.

var x = 1;
(function() {
  x = 2;
  return;
  var x = 3;
})();
console.log(x); // Outputs 1 in both Chrome and FF

Le code devrait certainement produire le résultat suivant 2 ? Si j'enlève le var mot-clé de var x = 3 , il produit 2 comme prévu. Y a-t-il une étrange optimisation du compilateur à l'œuvre ici ?

8voto

dystroy Points 145126

Non, le code ne devrait pas sortir 2 parce que les déclarations de variables sont hissées, de sorte que votre code est équivalent à

var x = 1;
(function() {
  var x;
  x = 2; // changes the internal x variable
  return;
  x = 3; // does nothing because it's not reached
})();
console.log(x); // Outputs the outside x, which is still 1

La ligne

x = 2;

ne modifie que l'aspect interne de la x qui fait de l'ombre à la variable extérieure.

La portée d'une variable non globale est la entière dans laquelle elle est déclarée. Du début de cette fonction jusqu'à sa fin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X