2017-01-27 18 views
0

Я новичок в программировании JavaScript. При изучении я столкнулся следующий код:Проблемы с пониманием базового модуля

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

Выполнение кода возвращает . Я полностью понимаю, как работают петли for и как работает модуль (например, 23 % 7 возвращает 2).

Тем не менее, у меня возникли проблемы с пониманием этого конкретного кода, в частности аргументом аргумента if. Кто-нибудь был бы любезен, чтобы объяснить это мне?

+0

Во-первых, этот обратный 'J = 0; я = 1 '. Второй 'if (i% 2)' аналогичен 'if (i% 2!== 0) '. В принципе, если ожидает логическое значение, а 'i% 2' вернет числовое значение. И '0' является ложным значением. Поэтому, если 'i% 2' возвращает' 0', если будет пропущено. – Rajesh

+0

Утверждение 'if (i% 2)' равнозначно 'if (i% 2! == 0)'. – hsfzxjy

+0

Я сделал ошибку, копируя код! Теперь он обновляется до 'for (i = 0, j = 0; i <= 6; i ++)' – Pero

ответ

2

В основном лет u добавьте коэффициенты.

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);

+0

Большое вам спасибо за ответ! Это делает все кристально чистым прямо сейчас! – Pero

0

j = 9 Причина, в конце концов происходит потому, что навсегда нечетное число i добавляется к j

x%2 где x четное число приведет к 0, который в свою очередь, принимает значение false в if.

x%2, где x представляет собой нечетное число приведет к 1, который в свою очередь, принимает значение true в if.

Поэтому каждый раз, когда x%y вычисляется в true текущее значение i добавляется к 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)

+0

Информативный и хорошо написанный. Спасибо огромное! – Pero