声明前在 Google Chrome 控制台中记录的 Javascript 对象属性

标签 javascript google-chrome

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

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 中的一些奇怪的范围规则?

谁能告诉我这里发生了什么?

最佳答案

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

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

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

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

关于声明前在 Google Chrome 控制台中记录的 Javascript 对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18098482/

相关文章:

javascript - chrome.app.window.create 隐身窗口?

c# - 更改asp.net中gridview内文本框的背景颜色?

javascript - 打开模态时,我需要使用什么来提交表单?

javascript - jQuery:检查/取消检查 DOM 元素

javascript - React-bootstrap-autosuggest 的问题

java - Cookie 未在 Chrome 或 Firefox 的本地主机上设置

google-chrome - 在 OWN 浏览器中禁用刷新/后退/前进

javascript - 如何减少 jQuery 代码中的冗余?

javascript - chrome for mobile 忽略高度 100%

google-chrome - 使用WebUSB,对USB设备有什么要求