问题:console.log()打印一个对象|数组时,在控制台看到的是打印的最终状态,而不是打印时的状态(不是执行console.log()的那一刻)。
解决:要打印对象|数组时,最好JSON.stringify()打印,或者打印里面具体的值,而不是打印整个对象。
const obj = {}
setTimeout(() => {
console.log('给obj添加属性值')
obj.a = 123
obj.b = 456
}, 1000)
// 控制台看到的说打印的最终状态,控制台的打印内容时内存地址,而不是对象本身
console.log('查看obj对象', obj)
// 方法1:打印里面具体的值
const obj = {}
setTimeout(() => {
console.log('给obj添加属性值')
obj.a = 123
obj.b = 456
}, 1000)
console.log('查看obj对象的属性值', obj.a, obj.b) // undefined undefined
// 方法2:使用JSON.stringify()打印
const obj = {}
setTimeout(() => {
console.log('给obj添加属性值')
obj.a = 123
obj.b = 456
}, 1000)
console.log('查看obj对象', JSON.stringify(obj)) // {}
总结
console.log() 打印对象时,输出的是内存地址上的内容;
引用类型是按内存地址改值的。
对象数组等引用类型时如何赋值以及存储形式