代码之家  ›  专栏  ›  技术社区  ›  cube

具有setTimeout闭包、变量访问的自调用函数

  •  1
  • cube  · 技术社区  · 14 年前

    我怎样才能进入 a_var 那是在 setTimeout someFunction ?

    谢谢。

    function someFunction(){
                 (function why(){
                           setTimeout(function(){
    
                              var a_var='help I wanna get out!';
                             return a_var;//<-useless?
    
                          }, 25);
                       })();
            };
    
    1 回复  |  直到 14 年前
        1
  •  1
  •   Daniel Mendel    14 年前

    你必须在更高的范围内声明一个变量,比如:

    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!';