Javascript Object属性在声明之前已登录Google Chrome控制台

Javascript Object Property logged in Google Chrome Console before Declaration

本文关键字:登录 Google Chrome 控制台 Object 属性 声明 Javascript      更新时间:2023-09-26

我一直在使用Google Chrome version 28.0.1500.95 m控制台测试一些JavaScript,并希望对其工作原理有更多的了解:看看下面的代码:

var obj = {
    a: 99,
    f: function() { }
}
console.log(obj.a)
console.log(obj.z)    
console.log(obj)
o.z = 100;

演示

这会输出以下结果:

99 
undefined 
Object {a: 99, f: function}
a: 99
f: function () { }
z: 100
__proto__: Object

我的问题是,为什么z在日志之后才声明,却在结果中可见?

我假设这是控制台的工作方式,而不是我不知道的JavaScript中的一些奇怪的范围规则?

有人能告诉我这里发生了什么事吗?

控制台中的对象最初显示为Object,并在单击箭头时展开。

当你展开对象时,有一个i图标,当你悬停它时,你会看到答案:

下面的对象状态在第一次展开时捕获

展开后您看到的是对象在展开时的状态,而不是调用log() 时的状态