通常情況下,創建一個封閉,創建它的另一個功能裏面,它得到其父的範圍:是否有可能在Javascript中創建一個外部閉包?
var parent = function(){
var a = "works!";
var subfunction(){
console.log(a); // "works!"
}
subfunction();
}
我試圖想出一個辦法來模擬具有此功能關閉行爲被定義爲以外的父函數。我知道這是可能的使用參數:
var parent = function(){
var a = "hello";
subfunction(a);
}
var subfunction(a){
console.log(a); // works, but because it's a param
}
我試圖找出是否有辦法做到這一點,而無需顯式設置的參數。我最初想我可以通過函數的本地對象作爲參數
var parent = function(){
var a = "hello";
subfunction(localScope);
}
var subfunction(localScope){
console.log(localScope.a); // not going to work this way
}
...但因爲我已經發現it's impossible to get a reference to a function's scope。有沒有其他的方法來模擬函數的實際範圍之外的閉包?
[可能感興趣](https://en.wikipedia.org/wiki/Scope_%28computer_science%29#Lexical_scope_vs._dynamic_scope) - JavaScript是一個詞彙範圍的語言。 – Pointy