2010-10-29 47 views
1

我如何获得setTimeout中的a_varsomeFunction具有setTimeout关闭,变量访问的自我调用功能

谢谢。

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

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

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

回报是在超时回调确实没用.. – 2010-10-29 02:39:39

回答

1

你有更高的范围申报a_var,就像这样:

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

a_var'的'的声明有可能比甚至更高这个!?....'function someFunction(){var a_var; (函数why(){a_var ='help我想出去!'; return a_var; // < - 无用?})();};' – cube 2010-10-29 02:45:50

+1

看起来你有一些不必要的部分,它可能有助于阅读有关JavaScript闭包的更多信息:http://www.webreference.com/programming/javascript/rg36/ – 2010-10-29 03:50:25