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

JavaScript while循环首次输出undefined而非'time'的原因

问题根因

输出undefined是代码执行顺序错误导致的,附带还有一个永远不会触发的逻辑分支bug:

  • 你在循环顶部声明quantity时仅做了声明、未赋初始值,JS中未初始化的变量默认值为undefined
  • 你对quantity的赋值逻辑写在了console.log打印语句之后:第一次进入循环时i=1,会先执行打印逻辑,此时quantity还没有被赋予'time'或'times'的有效值,因此直接输出了默认的undefined
  • 逻辑顺序bug:打印完成后你先执行了i++把i从1自增为2,再判断i == 1给quantity赋值,这个判断条件永远不会成立,quantity第一次赋值就会直接进入else分支被设为复数形式'times',永远不会拿到单数的'time'
修正代码

把赋值逻辑移到打印语句之前,调整执行顺序即可,修正后代码如下:

let i = 1,
  quantity;
// 注意:原代码未定义txtsoobin变量,此处补全示例定义,可替换为你实际的变量值
const txtsoobin = { firstName: 'Soobin' };
while (i <= 10) {
  // 先根据当前i值判断单复数,给quantity赋值
  quantity = i === 1 ? 'time' : 'times';
  // 赋值完成后再执行打印
  console.log(`${txtsoobin.firstName} sang blue hour ${i} ${quantity}.`);
  i++;
}

修正后第一次循环i=1时,quantity会被正确赋值为'time',后续i从2到10的循环中会自动使用复数形式'times',不会再出现undefined输出。

内容的提问来源于stack exchange,提问作者Simon Pamintuan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:15:43