2017-10-07 49 views
0

我试图回答这个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等于零,这是falsy?

+0

尝试在调试器中逐行执行代码。 –

+2

'index2 - 1'有点尴尬。 –

+0

在内部循环中添加'console.log',并且记录值 –

回答

1

是内循环迭代未在所述第一外部循环迭代因为索引2 - 1等于零,这是falsy?

这是正确的。任何提供给条件的错误值立即停止循环。

Falsey值0NaNnullundefined""false

+0

由于您是第一个发布答案的人,所以您的投票是这样的,尽管@Someprogrammerdude在澄清我的猜测后也应该获得赞誉。尽管如此,评论。 –