2017-12-20 5 views
2

私は何かを知り、何かを見るまで||( "論理的なOr")を使う方法を知っていると思った。Javascript - 論理または||

これは私が理解です:

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>

場合、ブロック内のコードが実行される、i == 1又はi == 3のいずれか、私はどちらかと考えconiditonの一つが真です。しかし、どのように入力の束が関与するようになりますか? (この場合は1-3人が関わった)。

1〜3の範囲を含むが、1または1だけではないのはなぜですか?& 3?

なぜ!inBetweenによってtrueが最初のif節内に置き換えられないのですか?

非常に非常に基本的な質問を申し訳ありません。しかし、私は本当にそれを理解することはできません。

コードがJavascript30から簡略化された:https://www.youtube.com/watch?v=RIPYsKx1iiU

+8

同じ 'inBetween'変数を使用しているためです。 iが1になると、 'inBetween'がtrueになります。 'inBetween'が3になるまでtrueになってfalseになる。 – Li357

+0

'ifBetween = false;'ブロック内の2番目の部分だけをリセットします。 –

+0

Li357、Hassan Imam – Kenny

答えて

0

Li357が言ったようにあなたがそれを理解するよう、||オペレータのロジックがあります。何が起こっているのはinBetweenフラグがの後にtrueに切り替わっていることです。 inBetweenフラグがi == 3まで変更されていないため、第2のifステートメントif(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