2013-02-04 41 views
1

我工作過eloquent javascript,我不明白這段代碼JavaScript的空循環體

for (var current = 20; current % 7 != 0; current++) 
    ; 
console.log(current); 

它說,它會檢查將第一個數字大於20,通過7 console.log()整除會產生21.

但我讀到,作爲開始於20,檢查是否current除以7沒有餘數,看看我們什麼時候打破循環。但直接20模7 = 6意味着它不等於0或(20 % 7 != 0)。

所以不應該for循環直接打破,console.log(current)產生20?我在這裏錯過了什麼?

+0

嗨,20國防部7 == 6不是4 –

+1

你搞砸'f​​or'環有點條件的一部分。它必須是「真實的」才能繼續循環,而'20%7!= 0'顯然是'真實的'。 ('!='檢查*不等式*) –

回答

3

只要滿足條件,循環就會繼續。

20 % 7 != 0 // 6 != 0 is true, so condition is met and loop continues 

21 % 7 != 0 // 0 != 0 is false, so condition fails and loop halts 

「......檢查current除以7沒有餘數」

不,這是「檢查current除以7沒有沒有餘數「

我認爲消極的情況會引發你。基本上,你需要問這個條件是否是一個真實的陳述。

所以,如果我的條件,而你的循環,我說「六不等於零」,你會說「這是真的」,所以你會同意讓循環繼續。

不過,如果我說「零不等於零」,你會說「這是假的」,並且將停止循環。


更明確的條件是「檢查current除以7確實有一個餘數」。沒有雙重否定,所以它可以寫成:

for (var current = 20; current % 7; current++) ; 

或爲:

for (var current = 20; current % 7 > 0; current++) ; 
0

沒有什麼是錯在這裏。簡單地改變;線這條線,你會得到的想法:

for (var current = 20; current % 7 != 0; current++) { 
    console.log('current value is ' + current ' + 
    ' and the mod result is ' + current % 7); 
}