Javascript - 逻辑或 ||

Javascript - Logical Or ||

我以为我知道什么是 || 以及如何使用 || ("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) {
     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 == 1i == 3,将执行 if 块中的代码。但是那么一堆输入是怎么参与进来的呢? (在这种情况下,涉及 1-3 个)。

为什么它涉及范围 1-3,而不只是 1 或 1&3?

为什么在第一个 if 子句中用 true 替换 !inBetween 不起作用?

抱歉问了一个非常非常基本的问题。但是我真的想不通。

代码从 Javascript30 简化而来:https://www.youtube.com/watch?v=RIPYsKx1iiU

就像李357说的,||运算符的逻辑就是你理解的那样。正在发生的事情是 inBetween 标志在 i == 1 之后切换为 trueinBetween 标志直到 i == 3 才被更改,从而触发你的第二个 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;
    }
}