1

私は雄弁なJavaScriptを使って作業していますが、このコードのビットを理解していません

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

console.log()7 で割り切れ、 21 を生成する20 より大きい最初の数をチェックすると述べています。

しかし、20 から開始すると読みcurrentました。7 で割った余りがないかどうかを確認して、いつループを中断するかを確認してください。しかし、すぐに 20 mod 7 == 6 は、0 または ( 20 % 7 != 0) と等しくないことを意味します。

では、for ループはすぐに中断しconsole.log(current)て 20 を生成するべきではないでしょうか? ここで何が欠けていますか?

4

2 に答える 2

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

「... current7で割った余りがないか確認してください」

いいえ、 「 7で割った余りがないか確認currentしてください」です。

ネガティブな状態があなたを投げていると思います。基本的に、条件が真のステートメントであるかどうかを尋ねる必要があります。

したがって、私が条件であり、あなたがループであり、「6はゼロに等しくない」と言う場合、「それは本当です」と言うので、ループを続行することに同意することになります。

しかし、「ゼロはゼロと等しくない」と言うと、 「それは誤りです」と言い、ループを停止します。


より明確な条件は、 「 7で割った余りがあるかどうかを確認するcurrent」です。二重否定はないので、次のように書くことができます。

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

またはとして:

for (var current = 20; current % 7 > 0; current++) ;
于 2013-02-04T05:58:26.863 に答える
0

ここでは何も問題はありません。行をこの行に変更するだけ;で、アイデアが得られます。

for (var current = 20; current % 7 != 0; current++) {
    console.log('current value is ' + current ' +
    ' and the mod result is ' + current % 7);
}
于 2013-02-04T06:01:19.023 に答える