声明之前在 Google Chrome 控制台中记录的 Javascript 对象属性 [重复]
Posted
技术标签:
【中文标题】声明之前在 Google Chrome 控制台中记录的 Javascript 对象属性 [重复]【英文标题】:Javascript Object Property logged in Google Chrome Console before Declaration [duplicate] 【发布时间】:2013-08-08 12:57:46 【问题描述】:我一直在使用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;
Demo
这会输出以下结果:
99
undefined
Object a: 99, f: function
a: 99
f: function ()
z: 100
__proto__: Object
我的问题是,为什么 z
在日志之后才被声明时在结果中可见?
我假设这与控制台的工作方式有关,而不是 JavaScript 中的一些奇怪的范围规则,我不知道?
谁能告诉我这里发生了什么?
【问题讨论】:
【参考方案1】:控制台中的对象最初显示为Object
,并在您单击箭头时展开。
展开对象时有一个 i 图标,当您将其悬停时,您会看到答案:
第一次展开时捕获下面的对象状态
展开后你看到的是对象在展开时的状态,而不是你调用log()
时的状态
【讨论】:
大声笑,即使是在 28 版,他们所做的唯一改进就是添加了几乎无法发现的工具提示,说明这种情况正在发生。 我正在进行数组排序:如果它们不同(即:我在这里对数组进行排序),这是否意味着我的脚本逻辑写错了?因为首先显示的顺序与展开列表中显示的顺序不同。 控制台的输出与您的脚本逻辑无关(例如,您可以记录连接的数组以获得日志中的预期顺序) btw-firefox 的功能完全一样以上是关于声明之前在 Google Chrome 控制台中记录的 Javascript 对象属性 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 Google Chrome 控制台中查看所有 JavaScript 变量的列表
在 Google Chrome 中清除 javascript 控制台
在 Google Chrome 中获取正确的类型名称 [重复]