【问题标题】:boolean condition inside for loopfor循环内的布尔条件
【发布时间】:2020-09-10 12:18:27
【问题描述】:

我试图理解 for 循环中的“flag = false”/“flag == false”是什么意思..

    if(flag){
    for (let index = 0, flag = false; index < myArr.length, flag == false; index++) {
        if(myArr[index].show == 1){
            flag = true;
            setFullMessage(index)
        }
    }}

tnx

【问题讨论】:

标签: javascript reactjs for-loop


【解决方案1】:

来自MDN | for - JavaScript强调我的):

for 语句创建一个循环,该循环由三个可选表达式组成,用括号括起来并用分号分隔,然后是要在循环中执行的语句(通常是块语句)。 p>

MDN | Comma operator (,) - JavaScript强调我的):

逗号运算符 (,) 计算其每个操作数(从左到右)并返回最后一个操作数的值。这使您可以创建一个复合表达式,在其中计算多个表达式,复合表达式的最终值是其最右边的成员表达式的值。这通常用于为 for 循环提供多个参数。

所以for (let index = 0, flag = false; index &lt; myArr.length, flag == false; index++) {} 有三个表达式

  • 初始化let index = 0, flag = false
  • 条件index &lt; myArr.length, flag == false
  • 最终表达式index++

初始化表达式初始化运行变量index并将flag设置为false。这是for 循环的开头。

条件检查index 位于myArr 的末尾,然后检查flag 是否为false,然后将最后一个表达式(false)的值设置为整个情况。如果 flag 为真,这将停止循环。

这有一个问题,因为如果myArr 元素中没有一个show 值为1,它不会在myArr 结束时停止

myArr = [
  {show: 0},
  {show: 0},
  {show: 0},
];
flag = true;
if (flag) {
  for (let index = 0, flag = false; index < myArr.length, flag == false; index++) {
    if (myArr[index].show == 1) {
      flag = true;
    }
    console.log(myArr[index], index, flag)
  }
}

条件最好是index &lt; myArr.length &amp;&amp; flag == false

myArr = [
  {show: 0},
  {show: 0},
  {show: 0},
];
flag = true;
if (flag) {
  for (let index = 0, flag = false; index < myArr.length && flag == false; index++) {
    if (myArr[index].show == 1) {
      flag = true;
    }
    console.log(myArr[index], index, flag)
  }
}

【讨论】:

    猜你喜欢
    • 2013-08-09
    • 2016-01-14
    • 2016-09-19
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    相关资源
    最近更新 更多