javascript中window与global是什么关系
黄舟
黄舟 2017-04-10 15:37:50
[JavaScript讨论组]

在chrome中看了一下,global是全局对象,在script标签中声明的全局变量都会添加到global中,另外global中有一个window属性,值是window。他们之间是什么关系?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(3)
怪我咯

我的理解是:

全局对象 global 是在全局上下文中的变量对象,对这个全局变量 global 的访问有两种情况

  1. 访问其属性
    Math、String等等都可以看作是全局对象 global 的属性,对 global 的属性的访问往往省略掉前缀,比如
Math.abs(1)

其实就是

[[global]].Math.abs(1)

global 变量本身是不可以直接访问的

  1. 不能直接访问 global ,是否可以间接访问?是

global 也可以创建属性来指向其本身,也就是 window 引用了 global
所以访问 window 即是访问 global

此外,在全局上下文里面,也可以用 this 访问 global,所以在全局上下文里面

window === this;//true
PHPz

个人理解中,浏览器环境是不存在global对象的,如果你在chrome console中看到的话,可能是该网页所生成的。
证明:打开about:blank

console.log(global);

所以,有可能是你的网站有这句代码,才导致你这个现象

window.global = window;

然后,在nodejs等服务端js环境中会存在global等变量,与浏览器的window对象类型相似,是全局可访问的对象,因此很多人都喜欢这样写,用来让代码兼容浏览器端和node服务端

(function(global) {
  // do things with global
})(typeof window !== 'undefined' ? window : global);
天蓬老师

浏览器里面 window 就是 global

nodejs 里没有 window,但是有个叫 global 的

javascriptconsole.log(window === window.window);     // true
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号