2013-01-31 36 views
1

爲什麼,只當我有這個宣稱它在全球範圍全球數組值損失外功能範圍數據

testing = []; 

function func1(){ 
    //some codes here that fills the "testing" array... 
} 
//I want to display here the new array values.. 

看它JSFiddle

  1. 一下就工程的功能範圍內按鈕
  2. 檢查元件的輸出,
  3. 控制檯上

    我需要另一個函數上的「測試」數組。那麼我將如何使用它 呢?

+1

[全局數組值無法在循環內部訪問]的可能重複(http://stackoverflow.com/questions/14635303/global-array-values-cant-be-accessed-inside-for-loop) – Pointy

+0

@積分這不是重複的,那傢伙有一個空的陣列,他沒有填寫。這個人異步填充他的數組,並試圖在填充之前訪問它。 –

+0

您的測試數組可供其他功能訪問。在「外部函數範圍」日誌中沒有任何內容是打印出來的,因爲它在那一點上是空的 –

回答

1

你的陣列被填充在此之後console.log("outside function scope :\n"+testing);被調用。

忽略你的jsfiddle中的所有問題,你沒有看到你期望的行爲的原因是因爲導致數組被填充的事件是異步的,因爲它顯示在範圍之外的代碼會立即執行。

1

請注意消息在控制檯中的顯示順序。當頁面加載:

inside function scope : 
RSdKmX2BH7o,EWMLMc3ES3I,SIXwlxhjaKY,RIKTFn5ALE8,acp8TbBPVos,6GpKR4-TLoI,XLKLkTnKRwg,6WPELkw5kD0 

任何功能範圍之外的代碼,一旦頁面加載立即運行,但畢竟是填充testing代碼後才能運行:

outside function scope : 

點擊按鈕後點擊按鈕。

+0

你能提出一個可能的解決方案嗎?我也想到了這一點,並試圖將「測試」變量分配給一個也是全球性的新變量。但結果相同。 –

+0

你需要怎樣處理結果?只需在裝入後執行。 – mellamokb

+0

我需要陣列數據到不同的功能..你能幫助嗎? http://jsfiddle.net/aKX87/3/ 我想從這個靜態的動態結果 - > http://jsfiddle.net/9zqL6/3/ –