基本模数理解有问题

Trouble with basic modulus understanding

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

for (i = 0, j = 0; i <= 6; i++) {
    if (i % 2) j += i;
}

运行 代码 returns 9。我完全理解 for 循环的工作原理以及模数的工作原理(例如 23 % 7 returns 2)。

但是,我在理解这段特定代码时遇到了麻烦 - 尤其是 if 语句参数。有人愿意给我解释一下吗?

最后之所以j = 9是因为i加上永远的奇数j

x%2 其中 x 是偶数将导致 0 进而在 if.[=46= 中求得 false ]

x%2 其中 x 是奇数将导致 1 进而在 if.[=46= 中计算为 true ]

因此每次 x%y 的计算结果为 truei 的当前值被添加到 j

循环开始

1: i=00%2=0j=0
2: i=11%2=1j=1 //(0+1)
3: i=22%2=0j=1
4: i=33%2=1j=4 //(1+3)
5: i=44%2=0j=4
6: i=55%2=1j=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)

基本上你加上赔率。

if (i % 2)

等同于

if (i % 2 !== 0)

var i, count = 0;

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

console.log(count);

var i, count = 0;

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

console.log(count);