JavaScript for循环的问题

    var arr = [];
    for (var i = 0; i < 3; i++) {
      arr.push(results[i].data);
      console.log(arr);
    }

上面的循环, 打印出来的 结果不是
【1】
【1,2】
【1,2,3】
而是
【1,2,3】
【1,2,3】
【1,2,3】

这个是什么原理。 不是同步的吗
(代码运行于微信小程序)

打印出来是这样的,
图片描述

但是一展开,却全都一样
图片描述

阅读 4.2k
6 个回答

arr是数组,打印时调用的实际是arr的引用,所以每次打印都会相同(同一个引用)。
如果想打印你想要的结果,可以先把arr转成字符串

arr.toString()
arr.join("")

都可以

var arr = [];
for (var i = 0; i < 3; i++) {
    arr.push(i);
    console.log(arr);
}
//-------------------
[ 0 ]
[ 0, 1 ]
[ 0, 1, 2 ]
undefined

...感觉是你results的问题,因为你的代码我自己测试时正常的

clipboard.png

你的results的结构贴出来看下

webkit内核对console.log()会延迟执行惰性求值
参考链接

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题