55 votes

Déclarations de fonction dans les instructions if/else ?

Comment sont gérées les déclarations de fonctions ?

 var abc = '';
if (1 === 0) {
  function a() {
    abc = 7;
  }
} else if ('a' === 'a') {
  function a() {
    abc = 19;
  }
} else if ('foo' === 'bar') {
  function a() {
    abc = 'foo';
  }
}
a();
document.write(abc); //writes "foo" even though 'foo' !== 'bar'

Cet exemple produit des sorties différentes dans Chrome et Firefox. Chrome affiche foo tandis que FF affiche 19 .

0voto

Nitin Jadhav Points 124

Les déclarations de fonction ne sont pas accessibles en dehors des blocs {}

 if (true) {
  function sayHi() {
    alert("hii");
  }
  sayHi(); //accessible
}

sayHi(); //error, not accessible since out of the block

Si vous souhaitez définir des fonctions conditionnelles, utilisez des expressions de fonction telles que

 let sayHi;
if (true) {
  sayHi = function(){
    alert("hii");
  }
  sayHi(); //accessible
}

sayHi(); //accessible

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