2016-11-20 42 views
0

在我的FizzBu​​zz上工作的時候,即使邏輯看起來沒問題,我也得到了意想不到的結果。一個變量的位置給了我臭名昭着的FizzBu​​zz意想不到的結果

拳頭我在for循環之外有變量output並且得到了意想不到的結果。

var output = ''; 
 
for (var count = 1; count <= 100; count++) { 
 
    if (count % 3 == 0) 
 
    output += 'Fizz'; 
 
    if (count % 5 == 0) 
 
    output += 'Buzz'; 
 
    console.log(output || count); 
 
}

過了一會兒,我剛搬來的for循環內的output變量,並得到預期的結果:

for (var count = 1; count <= 100; count++) { 
 
    var output = ''; // Variable moved inside the for loop 
 
    if (count % 3 == 0) 
 
    output += 'Fizz'; 
 
    if (count % 5 == 0) 
 
    output += 'Buzz'; 
 
    console.log(output || count); 
 
}

,但我仍然很不瞭解問題的性質。爲什麼它不適用於for循環外的output變量,但它可以在其中使用變量。

回答

2

通過在循環內部有var output = '',每當循環重新啓動時,變量output將重置爲''

for (var count = 1; count <= 3; count++)  
{ 
    var output = '' 
    output += count; 
    console.log(output); 
} 

>>> 1 
>>> 2 
>>> 3 

如果你有外循環var output,該變量會記住它的內容,並通過使用output += countcount變量將被追加到output

var output = '' 
for (var count = 1; count <= 3; count++)  
{ 
    output += count; 
    console.log(output); 
} 

>>> 1 
>>> 12 
>>> 123 
相關問題