2012-10-05 184 views
3

我有一些代碼看起來是這樣的:JavaScript console.log執行順序?

function pathfind (start,end,map) 
{ 
    this.Init = function() 
    { 
     this.open_node = new Array(); 
     this.open_node.push(start); 
     console.log(this.open_node); 
     this.Loop(); 
    } 
    this.Loop = function() 
    { 
     //Some code here 
    } 
    this.Init(); 
} 

出於某種原因,當我按下「啓動」 this.open_node和我登錄它的價值,我得到「未定義」。但是,經過一些錯誤測試後,我意識到註釋掉這個.Loop();在this.Init導致推動正常工作和console.log返回[開始],因爲它應該。任何人都可以解釋爲什麼地球上會發生這種行爲?

編輯:我打電話

pathfind({x:2,y:2},{x:24,y:24},parsemap(25,25)); 
+0

哪裏是調用pathfind()的行。你傳遞的信息可能會產生影響...... –

+0

感謝您指出了這一點。我的測試顯示數據類型並不重要,但是在這裏你可以去。 – Harangue

+0

如果在console.log語句之前放置一個斷點,會發生什麼情況? – sbr

回答

5

經過深入研究,我發現console.log不會立即在Chrome中執行。因此過時的報道。

0

你的代碼執行pathfind函數返回undefined(應該是這樣),但你等待結果從this.Init功能。應該可能執行它而不是pathfind

+0

對不起,我省略了一行重要代碼(this.Init();)。我研究了一下,發現console.log不像警報那樣立即執行。去搞清楚。 :\ – Harangue