为何do...while循环条件为false时仍向数组添加元素?
问题原因解析
你的代码出现这个结果,核心是误解了do...while循环的语法结构:
- do...while的正确语法是:
do { 循环体代码 } while(条件);—— 循环体只能写在do后面的大括号里,while(条件)后面直接跟分号,不能再额外加大括号。 - 你写在
while (i < 5)后面的{ myArray.push(i); i++; },是一个独立的代码块,和do...while循环没有关系,会被浏览器无条件执行一次。
代码执行流程拆解
- 先执行
do后面的空代码块,没有任何操作; - 检查
while(i < 5)的条件:此时i=10,条件不成立,do...while循环直接结束; - 执行后面独立的代码块:
myArray.push(10),i变成11; - 最后
console.log(myArray)自然会输出[10]。
修正后的代码(按需选择)
如果希望push操作是do...while循环的一部分(符合先执行一次再判断的特性):
const myArray = []; let i = 10; do { myArray.push(i); i++; } while (i < 5); console.log(myArray); // 输出[10]
如果你的需求是仅当i<5时才往数组添加元素:
const myArray = []; let i = 10; while (i < 5) { myArray.push(i); i++; } console.log(myArray); // 输出[]
内容的提问来源于stack exchange,提问作者stag 7824
相关产品推荐
相关产品推荐

