在chrome中看了一下,global是全局对象,在script标签中声明的全局变量都会添加到global中,另外global中有一个window属性,值是window。他们之间是什么关系?
在chrome中看了一下,global是全局对象,在script标签中声明的全局变量都会添加到global中,另外global中有一个window属性,值是window。他们之间是什么关系?
个人理解中,浏览器环境是不存在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 的
javascript
console.log(window === window.window); // true
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
我的理解是:
全局对象 global 是在全局上下文中的变量对象,对这个全局变量 global 的访问有两种情况
Math、String等等都可以看作是全局对象 global 的属性,对 global 的属性的访问往往省略掉前缀,比如
其实就是
global 变量本身是不可以直接访问的
global 也可以创建属性来指向其本身,也就是 window 引用了 global
所以访问 window 即是访问 global
此外,在全局上下文里面,也可以用 this 访问 global,所以在全局上下文里面