扫码关注官方订阅号
在chrome中看了一下,global是全局对象,在script标签中声明的全局变量都会添加到global中,另外global中有一个window属性,值是window。他们之间是什么关系?
人生最曼妙的风景,竟是内心的淡定与从容!
我的理解是:
全局对象 global 是在全局上下文中的变量对象,对这个全局变量 global 的访问有两种情况
Math.abs(1)
其实就是
[[global]].Math.abs(1)
global 变量本身是不可以直接访问的
global 也可以创建属性来指向其本身,也就是 window 引用了 global 所以访问 window 即是访问 global
此外,在全局上下文里面,也可以用 this 访问 global,所以在全局上下文里面
window === this;//true
个人理解中,浏览器环境是不存在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
javascript
console.log(window === window.window); // true
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我的理解是:
全局对象 global 是在全局上下文中的变量对象,对这个全局变量 global 的访问有两种情况
Math、String等等都可以看作是全局对象 global 的属性,对 global 的属性的访问往往省略掉前缀,比如
其实就是
global 变量本身是不可以直接访问的
global 也可以创建属性来指向其本身,也就是 window 引用了 global
所以访问 window 即是访问 global
此外,在全局上下文里面,也可以用 this 访问 global,所以在全局上下文里面
个人理解中,浏览器环境是不存在global对象的,如果你在chrome console中看到的话,可能是该网页所生成的。
证明:打开about:blank
所以,有可能是你的网站有这句代码,才导致你这个现象
然后,在nodejs等服务端js环境中会存在global等变量,与浏览器的window对象类型相似,是全局可访问的对象,因此很多人都喜欢这样写,用来让代码兼容浏览器端和node服务端
浏览器里面 window 就是 global
nodejs 里没有 window,但是有个叫 global 的