Pages

Portées des variables

Nous allons étudier la portée des variables à travers l'exemple suivant.
 
(function(){
  
  function A() {
    var aFixe= 2;
    var aVar = new Date().getMilliseconds();
    
    function modAVar(){
        var aFixe= 10000;
        aVar = new Date().getMilliseconds();
    }
    
    function B() {
        console.log('aFixe = ' + aFixe + "\n" + "  aVar = " + aVar);
     }

// affichage initial
     B();

// modification de aVar dans 2 second
     setTimeout(modAVar,2000); 
    
// affichage dans 3 seconde pour attendre l'effet de la modification
     setTimeout(B,3000);
  } 

// lancement du test
  A();
  
  
})();

Portée des variables on jsbin.com

Pour aller plus loin et comprendre un problème classique



Une closure permet de référencer une variable qui existe dans la fonction parent. 
Cependant, elle ne fournit pas la valeur de la variable au moment de sa création, mais fournit la dernière des valeurs dans la fonction parent. La variable de boucle utilisée comme itérateur pose donc le problème lors de l'appel de la deuxième fonction.

JS Bin on jsbin.com

 Cours