【问题标题】:Javascript - Logical Or ||Javascript - 逻辑或 ||
【发布时间】: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


【解决方案1】:

正如 Li357 所说,|| 运算符的逻辑如您所见。发生的事情是inBetween 标志在i == 1 之后被切换到true。并且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;
    }
}

【讨论】:

    猜你喜欢
    • 2021-01-11
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 2017-01-08
    • 2012-08-23
    • 2011-10-15
    • 1970-01-01
    • 2011-05-31
    相关资源
    最近更新 更多