Javascript - 逻辑或||

时间:2017-12-20 03:27:44

标签: javascript operator-keyword

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

这就是我的理解:

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&amp; 3?

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

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

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

1 个答案:

答案 0 :(得分: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;
    }
}