2017-10-13 34 views
0

enter image description here無法找到調用堆棧的價值,當我運行調試

var output =""; 
 

 
for(i=1;i<=20;i++) 
 
    { 
 
    
 
    if(i%3 === 0) 
 
     { 
 
\t \t debugger; 
 
     output+="Fizz"; 
 
     console.log(output); 
 
     } 
 
    
 
     
 
    }

我試圖運行Chrome瀏覽器開發控制檯此代碼。我添加了調試器來查看我的代碼如何工作,但在「CALL STACK」值中沒有顯示,我只能看到像「ANONYMOUS」這樣的消息。任何人都可以幫助我瞭解如何在調用堆棧中看到我的程序流!

謝謝!

+3

由於您從控制檯運行代碼並且全部立即(沒有函數),因此_is_沒有調用堆棧。你期望看到什麼? – DocMax

+0

如果您在JavaScript代碼中添加斷點,您將看到您的調用堆棧。 –

+0

@DocMax嗨我只是想在每次迭代後看到輸出! – sni

回答

0

enter image description here [enter image description here]

2你需要把你的代碼的函數棧見下,如果您是直接從全球範圍內運行,它會顯示匿名。

function Hello() { 
     var output =""; 

     for(var i=1;i<=20;i++) 
     { 

      if(i%3 === 0) 
      { 
       debugger; 
       output+="Fizz"; 
       console.log(output); 
      } 


     } 
    } 
    Hello(); 
+0

但是當我運行這個,爲什麼「」我「」在調試器窗口中代表3而不是1的起始值 – sni

+0

可能是你看錯了地方:),我附上開發人員工具的圖像,你可以看到在哪裏看看。 – Gautam

+0

@sni你已經把調試器放在錯誤的地方,只有當你的if條件滿足時纔會執行到你的調試器。即當我的值是3.把你的調試器之前,如果條件看到所有的迭代和它們的值。 – Gautam

0

試試這個,查找在調試器來發現其中的差別。

每次調用一個函數時,JS引擎都會創建一個新的執行上下文並將其放在堆棧上。

(function() { 
    for (i = 1; i <= 20; i++) { 
    if (i % 3 === 0) { 
     debugger; 
     output += "Fizz"; 
     console.log(output); 
    } 
    } 
})(); 
1

如果你想看到的值在循環中的每個傳球后,用你所擁有的啓動和擴大「全球通」項目的「範圍」部分在控制檯的右側。這將向您顯示所有全局值(您的代碼不在函數中)。然後點擊藍色的「繼續」按鈕繼續,直到下一次出現斷點。