2011-06-08 32 views
0

我是javascript中的新手,是什麼讓我在Javascript中的操作順序如此混亂。如何確保在java腳本中的所有其他代碼之前執行某段代碼?

讓想我有下面的代碼:

var myArray = []; 
function getArray(x){ 
var _array = []; 
.... {the code here is pretty big} 
return _array; 
} 
myArray = getArray(1); 

和代碼的其餘部分都是基於myArray的。不幸的是,使用此代碼有時myArray沒有及時設置,所以其餘代碼無法正常工作。無論如何,我可以確保在myArray設置正確時執行其餘代碼?

謝謝,

埃米爾。

+1

它應該是這樣工作的 – Ibu 2011-06-08 23:14:39

+0

首先寫這篇文章? – Bastardo 2011-06-08 23:17:49

+0

不是您的問題的答案,但相關。數組作爲指針傳遞給大多數語言的第一個元素,包括js。試試這個'function getArray(x,myArray){;} var myArray = []; getArray(1,myArray)'。當然,這取決於你的口味。 – Ben 2011-06-08 23:31:41

回答

3

將它放在js文件或html的頂部,然後放在任何其他javascript之前,它將首先執行。這假定你沒有用setTimeout或jQuery的文檔就緒功能來延遲某種延遲。

JS在網頁瀏覽器加載時執行,所以它的出現順序決定了它相對於其他JS執行的順序。

+0

爲我工作...謝謝! – Amir 2011-06-08 23:59:13

1
> var myArray = []; 

javascript處理有兩個階段:第一個處理所有的聲明,第二個處理所有的聲明,第二個處理代碼。因此,不管myArray是在哪裏聲明的,它將在任何代碼執行之前聲明。

當代碼執行開始時,語句按順序執行,因此myArray在執行下面的代碼之前被分配一個空數組。

> function getArray(x) { 
> var _array = []; .... 
> // the code here is pretty big 
>  return _array; 
> } 

同樣,的getArray運行任何代碼之前也將被限定。

> myArray = getArray(1); 

這將替換分配給上述myArray的與任何由的getArray返回的數組。

如果,不時的myArray的值是不是您所期望的,那麼它是什麼正在被的getArray返回的結果,所以我會專注於這一點。

相關問題