2011-09-22 61 views
0

這讓我瘋狂了幾個星期。我有一個可變數據,我想在我的程序的不同部分訪問。像這樣,跨範圍的Javascript值丟失

var data = []; 

SomeNamespace.module.method(function(){ 
    data.push(['some data']); 
}); 

// data is undefined here 

但是,它似乎丟失了,可能與範圍有關。我怎樣才能解決這個問題?

在此先感謝!

+0

數據不應該是'undefined'那裏,它應該要麼有它的數據,或者仍然取決於一個空的陣列 - 當'SomeNamespace.module.method'實際運行你傳入的函數。 – evan

+0

對不起,是的,它仍然是一個空數組。 – maximus

回答

7

該函數是一個回調函數,所以只有在回調函數運行之前數據纔會被填充。

所以這個:

var data = [];  
(function(){ 
    data.push(['some data']); 
})(); 
data; // ['some data'] 

組數據,而是:

var data = []; 
var func = function() { 
    data.push('values'); 
} 
data; // [] - empty array 
+0

不,即使將它放置在匿名自執行函數中,它仍然會返回[]。 – maximus

+0

嗯,它不應該。你可以發佈相關的代碼,因爲更深的事情正在發生。 – Joe

+0

我站好了;回調函數是不同步的,並且在我期待的時候也不分配。感謝你的回答! – maximus