JavaScript新手提问:while循环与for循环输出结果差异求解
while循环和for循环输出差异原因解析
造成二者输出开头#数量不同的核心原因是 两个循环内「变量更新」和「打印操作」的执行顺序完全相反。
while循环执行逻辑
对应代码如下:
let brick = "#"; while (brick.length < 8){ brick += "#"; console.log(brick); }
执行步骤:
- 初始状态
brick值为"#",长度为1 - 先判断
brick.length < 8是否成立,成立则进入循环体 - 进入循环后先给
brick追加1个#,此时brick长度变为2,再执行打印 - 因此首次打印的结果就是2个
#
for循环执行逻辑
对应代码如下:
for (let i = "#"; i.length <8; i+="#"){ console.log(i) }
for循环固定的执行顺序为:初始化 → 条件判断 → 循环体执行 → 迭代语句执行,循环往复直到条件不成立:
- 初始状态
i值为"#",长度为1 - 先判断
i.length <8成立,先执行循环体打印当前的i,此时打印结果就是1个# - 打印完成后才执行迭代语句
i += "#"更新i的值 - 因此首次打印的结果是1个
#
如果想要while循环和for循环输出一致,只需要调整while循环内打印和变量更新的顺序即可:
let brick = "#"; while (brick.length < 8){ console.log(brick); // 先打印 brick += "#"; // 再更新变量 }
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

