我以为我知道是什么以及如何使用||
(“逻辑或”),直到看到一些东西。
这就是我的理解:
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
就像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;
}
}