【问题标题】: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 < myArr.length, flag == false; index++) {}
有三个表达式
-
初始化:
let index = 0, flag = false
-
条件:
index < 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 < myArr.length && 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)
}
}