2016-05-16 128 views
1

我在Codecademy上學習JavaScript。當我使用while循環時,我發現如此多的輸出如下所示。循環後額外輸出

for (var i=0; i<5; i++){ 
     console.log("Dhanu identify problems and solve them"); 
} 

var loop = 0; 
while(loop<5){ 
    console.log("Do some more"); 
    loop++; 
} 

我收到的最後一行不需要的輸出爲4

enter image description here

+4

可能重複的[Javascript while循環返回值](http://stackoverflow.com/questions/35454291/javascript-while-loop-return-value) –

+1

@Reddy嘗試在瀏覽器控制檯中運行它,4仍然出現。我想這是返回並打印的最後作業的結果 – chrki

+0

這可能是Codecademy輸出的問題。如果沒有其他代碼行,這肯定不會打印出「4」(正如你在這個小提琴中看到的那樣 - https://jsfiddle.net/w14r4psr/)。我會建議在Codecademy論壇上提問。 – WonderGrub

回答

2

你得到的輸出是簡單的console.log它記錄了「迴路」變量的最後一個已知值(這裏在Firefox):

enter image description here

這是絕對不相關的代碼,你不擔心THA噸。如另一個答案中所述,調試控制檯使用記錄最後一行的結果(可能是因爲它們是爲了調試)。

例如語句的 「i = 1」 的計算結果爲 「1」:

enter image description here

而語句 「VAR I = 1;」計算結果爲「不確定」,因此登錄「未定義」

您可以通過這些語句調用EVAL遵守同樣的行爲:

enter image description here

+0

偉大和快速趕上.. – Sinto

+2

'你得到的輸出是簡單的console.log哪些日誌'loop'變量的最後一個已知值:'但爲什麼? –

+0

由於調試面板的內部實現(我不深入),這可能基於某種方式對eval(請參閱我編輯的答案) –

0

你看到的話,因爲你的while循環的最後一條語句是循環++,它「返回」循環的當前值。這只是在這樣的控制檯中運行代碼的副作用。控制檯基本上是read-execute-print-loops(REPL),所以他們需要打印一些東西。如果你運行此作爲網頁中的腳本,你不會看到4

+0

謝謝。我知道這不是我應該擔心的事情。但仍需要知道發生了什麼。 –

0

當你寫的任何聲明的開發者控制檯,然後最後一個返回值將被打印出來......

例如

var a; 

它在控制檯上打印未定義。

a = 10; 

它在控制檯上打印10。

a = 10; a = a + 5; 

它在控制檯上打印15。

簡單地,當我們將任何值或增量或減量數則執行該操作之後返回值...

所以,在上面的或下面的代碼

var loop = 0; 
while(loop<5){ 
    console.log("Do some more"); 
    loop++; 
} 

最後循環++是4。