鍍金池/ 問答/HTML/ object展開后不一致,拿不到展開后的值

object展開后不一致,拿不到展開后的值

圖片描述

回答
編輯回答
負(fù)我心

console.log 輸出調(diào)用此語句時參數(shù)的快照,展開(即 console.dir)時輸出的是參數(shù)在內(nèi)存中最新的狀態(tài)。

var b = {a: 0};
[1, 2, 3].forEach(i => [b.a = i, console.log(b), console.dir(b)])

// {a: 1} 展開后為 {a: 3}
// Object 展開后為 {a: 3}
// {a: 2} 展開后為 {a: 3}
// Object 展開后為 {a: 3}
// {a: 3} 展開后為 {a: 3}
// Object 展開后為 {a: 3}

如果發(fā)現(xiàn)有快照與內(nèi)存最新狀態(tài)不匹配的情況,那就是在快照之后發(fā)生了修改操作。

2017年4月11日 10:16
編輯回答
夏木

之所以不一致,是因為你的賦值是在 輸出(賦值前) 到 展開(賦值后) 的這個時間段里。
也就是說,你輸出的時候amout還是null,然后你才給它賦值為1

2017年8月30日 16:50
編輯回答
淺淺

log之后,該字段被修改了

和這個類似

const obj = {
    name: 1
};

//log
console.log(obj);
obj.name = 2;
2017年3月30日 22:49