2020-10-29關(guān)于先console再改變對象內(nèi)容的問題

先看代碼結(jié)構(gòu):

 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;

      }

數(shù)組結(jié)構(gòu):



數(shù)組內(nèi)的對象結(jié)構(gòu):

{
    "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屬性,但是發(fā)現(xiàn)這兩個屬性被提前加到了console的theData對象里。

這是為什么呢?

我想大概是這個原因,因為js看到你console這個對象,但后面又對這個對象進行了操作,所以會等你操作完再輸出這個對象,這就導致了輸出的結(jié)果和自己想象的不一樣??梢约觗ebugger,然后鼠標懸浮上去看實時的數(shù)據(jù)內(nèi)容。

如果想臨時輸出這個theData對象,可以這么做,先轉(zhuǎn)為字符串再轉(zhuǎn)為對象輸出,類似深拷貝的思想。這樣程序執(zhí)行到這里,就會立刻輸出。

 console.log(`每個歷史消息${i}`,JSON.parse(JSON.stringify(theData)))
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容