JS循环疑问:为何将自增移至循环外会引发无限循环?
为什么将自增语句放在while循环花括号外会导致无限循环?
先明确while循环的执行逻辑:先判断循环条件,条件成立就执行花括号内的代码块,代码块执行完后再次回到条件判断,重复这个过程直到条件不成立。
看你的原代码:
let i = 0; while ( i<=5 ) { console.log (i); i++; }
每次进入循环体后,执行完console.log(i),立刻执行i++让变量i的值加1。所以i会依次变成0、1、2、3、4、5,当i变成6时,i<=5的条件不成立,循环就正常结束了。
再看修改后的代码:
let i = 0; while ( i<=5 ) { console.log (i); } i++;
这里的i++被放到了循环花括号的外面,意味着它永远不会被执行到——因为循环条件i<=5一开始就是true,而循环体里没有任何改变i值的操作,i会一直保持0,循环条件永远成立,循环会一直重复执行console.log(i),根本没机会走到外面的i++,自然就变成了无限循环。
内容的提问来源于stack exchange,提问作者Iqbal S
相关产品推荐
相关产品推荐

