【发布时间】:2017-12-20 03:27:44
【问题描述】:
我以为我知道||(“逻辑或”)是什么以及如何使用,直到看到一些东西。
这是我的理解:
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>
我认为任何一个 coniditon 都是真的,无论是i == 1 还是i == 3,if 块中的代码都会被执行。但是,为什么会涉及到一堆输入呢? (在这种情况下,涉及 1-3 个)。
为什么它涉及范围 1-3,而不仅仅是 1 或 1&3?
为什么在第一个 if 子句中将 !inBetween 替换为 true 不起作用?
很抱歉问了一个非常基本的问题。但我实在想不通。
代码由 Javascript30 简化:https://www.youtube.com/watch?v=RIPYsKx1iiU
【问题讨论】:
-
因为您使用的是相同的
inBetween变量。一旦 i 为 1,inBetween变为真。它保持为真,直到inBetween为 3 时才变为假。 -
只需在第二个 if 块内重置
inBetween = false;。 -
谢谢 Li357,哈桑伊玛目
-
对不起各位,还有一个问题,基于上述代码的“结构”,我将值从布尔值更改为字符串,但结果不一样。 if和||的第二部分匹配后,var的值永远改变了,这和上面的不一样,请你再帮忙? var myVar = 'a'; for(让 i=0; i
标签: javascript operator-keyword