乐趣区

关于前端:关于先console再改变对象内容的问题

先看代码构造:

 console.log("历史音讯 res",res)
     
      for (let i = 0; i < res.result.length; i++) {let theData = JSON.parse(res.result[i].payload);
        theData.sendTime = res.result[i].ms;
        console.log(` 每个历史音讯 ${i}`,theData)

        theData.sendHour = formatTimestamp(theData.sendTime).hour;
        theData.sendMinute = formatTimestamp(theData.sendTime).minute;

      }

数组构造:

数组内的对象构造:

{
    "msg":"222222",
    "avatar":"[https://hqjynanj.oss-cn-shenzhen.aliyuncs.com/web/skylive/images/live_user1.png](https://hqjynanj.oss-cn-shenzhen.aliyuncs.com/web/skylive/images/live_user1.png)",
    "role":2,
    "msgType":0,
    "sendTime":1603942259000,
    "uid":"1010561896",
    "nickName":"23123"
}

输入:

这里的逻辑能够看到,本来是想先输入 theData 再对 theData 加 sendHour 和 sendMinute 属性,然而发现这两个属性被提前加到了 console 的 theData 对象里。

这是为什么呢?

我想大略是这个起因,因为 js 看到你 console 这个对象,但前面又对这个对象进行了操作,所以会等你操作完再输入这个对象,这就导致了输入的后果和本人设想的不一样。能够加 debugger,而后鼠标悬浮下来看实时的数据内容。

如果想长期输入这个 theData 对象,能够这么做,先转为字符串再转为对象输入,相似深拷贝的思维。这样程序执行到这里,就会立即输入。

 console.log(` 每个历史音讯 ${i}`,JSON.parse(JSON.stringify(theData)))

退出移动版