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

时间:2017-10-07 15:22:42

标签: javascript for-loop

我试图回答这个question我遇到了一个奇怪的循环条件。

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);
}

在检查内循环为每个外循环迭代进行多少次迭代时,我得到了这个:

var x = 0;

for (index1 = 1; index1 < 8; index1++) {
  //var op = '#';
  for (index2 = index1; index2 - 1; index2--) {
    var log = {};
    log.a = x; //check value before increment
    x++;
    log.b = x; //check value after increment
    console.log(`outer: ${index1}, inner: ${index2}`, log);
  }
  console.log(x);
  x = 0;
  //console.log(op);
}

如您所见,它会记录0, 1, 2, 3, 4, 5, 6

我的问题是:

  

内循环是否在第一个外循环迭代中没有迭代,因为index2 - 1等于零,这是假的吗?

1 个答案:

答案 0 :(得分:1)

  

内循环是否在第一个外循环迭代中没有迭代,因为index2 - 1等于零,这是假的吗?

这是对的。为循环条件提供的任何假值都会立即停止循环。

虚假值为0NaNnullundefined""false