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

for循环向数组push值时console.log输出异常问题咨询

问题原因解析

你遇到的这个情况不是代码逻辑错误,而是浏览器控制台的特性导致的:

JavaScript里数组属于引用类型,当你用console.log(arr)打印它时,控制台并不会立即记录下打印那一刻数组的具体内容,而是保存了这个数组的引用。只有当你后续打开控制台查看这些日志时,它才会去读取这个引用对应的当前数组状态——而此时循环已经执行完毕,数组已经被填满了[0,1,2,3,4],所以你看到的每一条日志里的数组都是最终状态。

验证与解决方法

如果想要看到每一步数组的真实状态,可以打印数组的快照,比如:

  1. 转成字符串打印:
let arr = [];

for(let i=0; i < 5; i++){
  arr.push(i);
  console.log(arr.toString(), i)
}

输出会是:

0 0
0,1 1
0,1,2 2
0,1,2,3 3
0,1,2,3,4 4
  1. 创建数组副本打印:
let arr = [];

for(let i=0; i < 5; i++){
  arr.push(i);
  console.log([...arr], i) // 用扩展运算符创建新数组副本
}

这样就能得到你预期的逐步增长的数组输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:37:03