Javascript 奇怪的内部循环没有执行某些迭代

Javascript 奇怪的内部循环没有执行某些迭代,javascript,for-loop,Javascript,For Loop,我试图回答这个问题时遇到了一个奇怪的循环条件 for (index1 = 1; index1 < 8; index1++) { var op = '#'; for (index2 = index1; index2 - 1; index2--) { //this loop is weird to me op = op + '#'; } console.log(op); } for(index1=1;index1

我试图回答这个问题时遇到了一个奇怪的循环条件

for (index1 = 1; index1 < 8; index1++) {
  var op = '#';
  for (index2 = index1; index2 - 1; index2--) { //this loop is weird to me
    op = op + '#';
  }
  console.log(op);
}
for(index1=1;index1<8;index1++){
var op='#';
对于(index2=index1;index2-1;index2--){//这个循环对我来说很奇怪
op=op+'#';
}
控制台日志(op);
}
在检查每个外循环迭代的内循环迭代次数后,我得到以下结果:

var x=0;
对于(index1=1;index1<8;index1++){
//var op='#';
对于(index2=index1;index2-1;index2--){
var log={};
log.a=x;//在增量之前检查值
x++;
log.b=x;//检查增量后的值
log(`outer:${index1},inner:${index2}',log);
}
控制台日志(x);
x=0;
//控制台日志(op);
}
是因为index2-1等于零,这就是falsy,所以内循环在第一次外循环迭代时没有迭代吗

没错。任何提供给循环的条件的错误值都会立即停止循环


错误值有
0
NaN
null
未定义
false

请尝试在调试器中逐行检查代码。
index2-1
有点笨拙。添加
控制台。在内部循环中记录
,然后记录values@Someprogrammerdude,已经做到了。如果
inde2-1==0
在类C语言(如JavaScript)中,“true”是非零的,而“false”是零,那么它似乎没有进入内部循环。JavaScript增加了一点,但基本上就是这样,如果你有零,那么它是假的。您的条件可以重写为
index2-1!=0
。这是你的投票,因为你是第一个发布答案的人,不过@Someprogrammerdude也应该得到表扬,因为他澄清了我的猜测。不过作为评论。