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

为何for循环外迭代变量i为3?循环内最后一次仅输出2

为什么for循环结束后i的值是3?

这是JavaScript的for循环执行流程和变量作用域共同作用的结果,拆解具体过程就能明白:

首先明确for循环的固定执行顺序:

  • 第一步:执行初始化表达式(也就是代码里的i = 0)
  • 第二步:判断条件表达式(i < 3),结果为true就进入循环体执行代码
  • 第三步:循环体代码执行完毕后,执行递增表达式(i++)
  • 第四步:回到第二步重复判断条件,直到条件为false时终止循环

对应你的代码,每一步的变量变化如下:

  1. 初始化i = 0,条件0 < 3成立,进入循环体输出0 from for loop,之后执行i++,i变成1
  2. 条件1 < 3成立,进入循环体输出1 from for loop,执行i++,i变成2
  3. 条件2 < 3成立,进入循环体输出2 from for loop,执行i++,i变成3
  4. 此时判断条件3 < 3,结果为false,循环终止

另外,你的代码里i是用let在循环外部声明的,这意味着循环内外的i是同一个变量。循环终止时,i已经被递增到3,所以外部访问i自然得到3。

如果把i的声明放到for循环的初始化里(比如for (let i = 0; i < 3; i++)),i的作用域就会被限制在循环内部,外部就访问不到这个变量了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 21:19:52