基本模数理解困难

时间:2017-01-27 10:14:23

标签: javascript loops if-statement for-loop modulus

我是JavaScript编程的新手。在学习时我遇到了以下代码:

jcmd 8976 Thread.print | less -N

运行代码会返回 9 。我完全理解(void) mapView:( NMAMapView *) mapView didSelectObjects:(NSArray *) objects 循环如何工作以及模数如何运作(例如for (i = 0, j = 0; i <= 6; i++) { if (i % 2) j += i; } 返回for)。

但是,我在理解这个特定代码时遇到了麻烦 - 特别是23 % 7语句参数。有人会对我解释这个吗?

2 个答案:

答案 0 :(得分:2)

基本上你加上赔率。

if (i % 2)

相当于

if (i % 2 !== 0)

&#13;
&#13;
var i, count = 0;

for (i = 0; i <= 6; i++) {
    if (i % 2) {
        console.log(i, i % 2),
        count += i;
    }
}

console.log(count);
&#13;
&#13;
&#13;

&#13;
&#13;
var i, count = 0;

for (i = 0; i <= 6; i++) {
    if (i % 2 !== 0) {
        console.log(i, i % 2),
        count += i;
    }
}

console.log(count);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

最后j = 9的原因是因为i

中添加的j数字不均匀

x%2其中x是偶数会产生0,而false会在if内评估为x%2

x其中1数字不均匀,会产生true,而if会在x%y内评估为true

因此,每次i评估为j时,i=0的当前值都会添加到0%2=0

循环开始

1:j=0i=11%2=1
2:j=1 //(0+1)i=22%2=0
3:j=1i=33%2=1
4:j=4 //(1+3)i=44%2=0
5:j=4i=55%2=1
6:j=9 //(4+5)for (i = 0, j = 0; i <= 6; i++) { if (i % 2) j += i; // for every uneven number i is added to j } console.log(j)►{{1}}

循环结束

{{1}}