2010-10-29 46 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