2017-12-20 13 views
2

뭔가를 볼 때까지 || ("Logical Or")을 사용하는 방법을 알고 있다고 생각했습니다.자바 스크립트 - 논리적 또는 ||

이것은 내가 이해입니다 :

if(conditional A || conditional B) { 
    // execute if either A or B is true 
} 

이것은 당신이 설명해주십시오 것, 내가하지 않는 것입니다.

var inputs = document.querySelectorAll('input'); 
 
var inBetween = false; 
 

 
for(var i = 0; i < 10; i++) { 
 
    if(i == 1 || i == 3) { 
 
    \t inBetween = !inBetween; 
 
    } 
 
    if(inBetween) { 
 
     inputs[i].checked = true; 
 
    } 
 
}
<ul> 
 
    <li><input type="checkbox">ONE</li> 
 
    <li><input type="checkbox">TWO</li> 
 
    <li><input type="checkbox">THREE</li> 
 
    <li><input type="checkbox">FOUR</li> 
 
    <li><input type="checkbox">FIVE</li> 
 
    <li><input type="checkbox">SIX</li> 
 
    <li><input type="checkbox">SEVEN</li> 
 
    <li><input type="checkbox">EIGHT</li> 
 
    <li><input type="checkbox">NINE</li> 
 
    <li><input type="checkbox">TEN</li> 
 
</ul>

나는 어느 coniditon 중 하나가, i == 1 또는 i == 3, 블록이 실행 될 경우 내 코드 중 하나 사실이다 생각했다. 그렇다면 입력이 얼마나 많이 필요합니까? (이 경우에는 1-3 명이 참여했다).

범위가 1-3인데 왜 1이나 1이 아닌지 & 3입니까?

!inBetweentrue으로 바꾸고 첫 번째 if 절을 바꾸지 않습니까?

매우 기본적인 질문을 드려 죄송합니다. 그러나 나는 그것을 정말로 알 수 없다.

코드는 Javascript30에서 간단했다 : https://www.youtube.com/watch?v=RIPYsKx1iiU

+8

동일한 'inBetween' 변수를 사용하고 있기 때문에. i가 1이되면 'inBetween'이 true가됩니다. 'inBetween'이 false가 될 때까지 * true를 유지합니다. – Li357

+0

'ifBetween = false;'를 블록 내에서 두 번째로 리셋한다. –

+0

감사합니다 Li357, 하산 이맘 – Kenny

답변

0

Li357 말했듯이 당신이 그것을 이해 한, || 운영자의 논리입니다. 무슨 일이 일어나고 inBetween 플래그가 i == 1 이후 true으로 전환되고 있습니다. 그리고 inBetween 플래그는 i == 3까지 변경되지 않으므로 두 번째 ifif(inBetween)이 실행됩니다.

각 루프가 시작될 때 플래그 inBetween을 전환하면 문제가 해결됩니다.

for(var i = 0; i < 10; i++) { 
    inBetween = false; 
    if(i == 1 || i == 3) { 
     inBetween = true; 
    } 
    if(inBetween) { 
     inputs[i].checked = true; 
    } 
} 
+0

감사합니다 Snar3! – Kenny