我网页知识很基础,帮别人写个微信小程序碰到一个很奇怪的问题

2019-04-21 15:22:16 +08:00
 Destiny97

db.collection('bikeManage').get()
      .then(res => {
        that.setData({
          bikeList: []
        })
        var bikeLists = [];
        for (var i = 0; i < res.data.length; i++) {
          list.bikeID = res.data[i].bikeID;
          //console.log(res.data[i].bikeID)
          if (res.data[i].showOnMap) {
            list.showOnMap = "正常";
          } else {
            list.showOnMap = "未投入";
          }
          console.log(list)
          bikeLists.push(list);
        }

不懂就要问,是我写错了还是怎么回事,不能理解图片的结果

1958 次点击
所在节点    问与答
9 条回复
Destiny97
2019-04-21 15:29:49 +08:00
最后一个的 bikeID 是 test1,为什么会出现图片上的结果,不知道为什么
yxwzaxns
2019-04-21 15:50:12 +08:00
var 换成 let
stillsilly
2019-04-21 16:11:22 +08:00
你指的是为什么这两个值不一样吗?
https://s2.ax1x.com/2019/04/21/EFlzxx.jpg
因为 console.log 一个对象的时候,保持着对这个对象的 [引用] ,点开的时候,显示的是最新的值,
比如这样:
https://s2.ax1x.com/2019/04/21/EF1QeS.jpg
Destiny97
2019-04-21 16:36:02 +08:00
@stillsilly 原来如此,js 很菜,现学了点,谢谢
jokyme
2019-04-21 18:06:16 +08:00
list 泄漏到全局变量里面去了。list 要先在循环里面定义 const list = {},另外,定义变量不要用 var,用 let 或 const 代替
agdhole
2019-04-21 18:28:23 +08:00
用 了 let const,建议看教程去 mdn,不要被 csdn 的乐色文毒害了
Destiny97
2019-04-21 22:13:06 +08:00
@jokyme 嗯,我就是这样改了,好了,谢谢
Destiny97
2019-04-21 22:13:31 +08:00
@jokyme
@agdhole 好的,我去查查 var 和 let 的区别
Destiny97
2019-04-21 22:15:19 +08:00
我也是服了有些写博客的人,就直接复制别人的,错的也复制,害人不浅,之前学 uboot 的时候快被坑死了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/557242

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX