Javascript - 逻辑或||

问题描述 投票:2回答:1

我以为我知道是什么以及如何使用||(“逻辑或”),直到看到一些东西。

这就是我的理解:

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 == 1还是i == 3,if块中的代码都将被执行。但那么一堆投入怎么会涉及呢? (在这种情况下涉及1-3)。

为什么它涉及范围1-3,但不仅仅是1或1和3?

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

很抱歉提出一个非常基本的问题。但我真的无法弄明白。

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

javascript operator-keyword
1个回答
0
投票

就像Li357所说的那样,||运算符的逻辑就像你理解的那样。发生的事情是在inBetween之后true旗子被切换到i == 1。并且inBetween旗子不会被改变直到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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.