javascript - 全局变量只是 `window` 对象的属性吗?

标签 javascript browser scope window

每当我在浏览器上看到一个网站时,一个 javascript 实例正在运行。我可以在控制台(DevTools)中声明一个全局变量;

var a = 1234567890; 

此变量已在全局范围内声明,这样我就可以像这样获取变量的值;

> a 
1234567890

不过,我也可以这样做;

> window.a 
1234567890 

我是否正确理解 window 对象是包含浏览器网站实例中所有全局变量的对象?如果是这样,窗口对象属于什么范围?这让我有点困惑;

> window 
Window {top: Window, window: Window, location: Location, external:, ...}  
> window.window 
Window {top: Window, window: Window, location: Location, external:, ...}  
> window.window.window 
Window {top: Window, window: Window, location: Location, external:, ...}  

window 对象是最终的全局对象吗?它是否有一个名为 window 的对象引用回自身?

最佳答案

Is the window object the ultimate global object and does that have an object called window that refers back to itself?

是的,是的。例如,这将返回 true:

window.window.window.window.window === window.window;

如果您有兴趣,您可以使用 Object.keys 获取 window 对象(以及所有全局变量)的所有属性列表:

console.log(Object.keys(window));

但是请注意,如果您花太多时间考虑全局变量,则您的代码架构可能存在问题。

关于javascript - 全局变量只是 `window` 对象的属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19855823/

相关文章:

javascript - 在 Userpro 插件中获取新注册用户的用户 ID

javascript - 检测浏览器是否已经具有平滑滚动功能

javascript - 浏览器中音频 MediaStream 的当前带宽或质量是多少? (WebRTC)

javascript - JavaScript 中的变量作用域 (Dojo)

mysql - 带限制的 Stacking Rails 查询

javascript - 使用 x-editable 更改 select2 的数据,无需重新设置源选项

php - 尝试同时使用window.location和replaceWith()

javascript - id未知时获取textarea的值

css 浏览器兼容性 firefox 不工作

javascript - 对象层次结构中的变量范围