You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何do...while循环条件为false时仍向数组添加元素?

问题原因解析

你的代码出现这个结果,核心是误解了do...while循环的语法结构:

  • do...while的正确语法是:do { 循环体代码 } while(条件); —— 循环体只能写在do后面的大括号里,while(条件)后面直接跟分号,不能再额外加大括号。
  • 你写在while (i < 5)后面的{ myArray.push(i); i++; },是一个独立的代码块,和do...while循环没有关系,会被浏览器无条件执行一次。

代码执行流程拆解

  1. 先执行do后面的空代码块,没有任何操作;
  2. 检查while(i < 5)的条件:此时i=10,条件不成立,do...while循环直接结束;
  3. 执行后面独立的代码块:myArray.push(10),i变成11;
  4. 最后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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 19:57:34