gpt4 book ai didi

javascript - 对象和 console.log 的奇怪行为

转载 作者:行者123 更新时间:2023-11-28 03:08:44 26 4
gpt4 key购买 nike

这段代码:

foo = [{id: 1},{id: 2},{id: 3},{id: 4}, {id: 5}, ];
console.log('foo1', foo, foo.length);
foo.splice(2, 1);
console.log('foo2', foo, foo.length);

在 Chrome 中产生以下输出:

foo1 
[Object, Object, Object, Object, Object] 5
0: Object
1: Object
2: Object
3: Object
length: 4
__proto__: Array[0]
5 (index):23
foo2
[Object, Object, Object, Object] 4
0: Object
1: Object
2: Object
3: Object
length: 4
__proto__: Array[0]

fiddle :http://jsfiddle.net/2kpnV/

这是为什么?

最佳答案

通过console.log检查对象以异步方式发生。控制台同步接收对象的引用,但在对象展开之前不会显示对象的属性(在某些情况下,取决于浏览器以及日志发生时是否打开了开发工具)。如果在控制台中检查对象之前已对其进行了修改,则显示的数据将具有更新的值。

例如,Chrome 会在一个框中显示一个小 i,当鼠标悬停在该框中时,会显示:

Object value at left was snapshotted when logged, value below was evaluated just now.

让您知道您在看什么。

在这些情况下记录的一个技巧是记录各个值:

console.log(obj.foo, obj.bar, obj.baz);

或者对对象引用进行 JSON 编码:

console.log(JSON.stringify(obj));

关于javascript - 对象和 console.log 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60358882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com