2010-10-29 8 views
1

Comment accéder au a_var qui se trouve dans setTimeout, à partir du someFunction?Fonction d'auto-appel avec fermeture setTimeout, accès variable

Merci.

function someFunction(){ 
      (function why(){ 
         setTimeout(function(){ 

          var a_var='help I wanna get out!'; 
         return a_var;//<-useless? 

         }, 25); 
        })(); 
     }; 
+0

le retour est en effet inutile dans le rappel de délai d'attente .. –

Répondre

1

Vous devez déclarer a_var dans un champ plus, comme ceci:

var a_var = 'I can help from here'; 
function someFunction(){ 
    setTimeout(function(){ 
    a_var = "help I wanna get out!"; 
    }, 25); 
} 
someFunction(); 
console.log(a_var); // logs 'I can help from here' 
setTimeout(function(){ 
    console.log(a_var); 
}, 30); // logs 'help I wanna get out!'; 
+0

La déclaration de 'a_var' doit être encore plus élevé que this!? .... 'function someFunction() {var a_var; (function pourquoi() {a_var = 'aide je veux sortir!'; return a_var; // <- inutile?})();}; ' – cube

+1

Il semble que vous ayez des parties inutiles dedans, ça pourrait Soyez utile pour en savoir plus sur les fermetures javascript: http://www.webreference.com/programming/javascript/rg36/ –

Questions connexes