在 chrome 中打印對象的時候, 對象數(shù)據(jù)是折疊起來的, 如下圖:
image.png
這樣一層層的包裹讓數(shù)據(jù)看起來更加清晰, 但是這里卻有一個小坑:
在展開數(shù)據(jù)的時候 chrome 會再次從內(nèi)存中讀取一次數(shù)據(jù), 對于需要展開的log, 展開后看到的可能不是打印時的值, 而是展開時內(nèi)存中的值
,如果需要查看打印時數(shù)據(jù), 還是從對象取出后再打印吧.
下面是針對這個現(xiàn)象的測試:
componentDidMount() {
const a = {
a1:1,
b:{
a2:2,
}
};
console.log(a); // 改變前 a1 = 1
setTimeout(()=>{
a.a1=12;
console.log(a); // 改變后 a1 = 12
}, 2000);
}
這里設(shè)置了一個2秒以后改變a對象中a1值的小機(jī)關(guān)
下面是 chrome 打印結(jié)果:
image.png
在第一次的打印中 a1沒展開的值是 1, 展開后(2秒后展開的)成了12, 第二次也就是2秒后, 展開和非展開的值相同.
這里其實 chrome 給出了提示
value below was evaluated just now