首先 有三种定义变量的方式, 它们分为两种, 一个为块级作用域: let 、 const; 一个是全局作用域 | 函数作用域: var。
var str = '123';
function ajax(){
console.log(this.str);
}
ajax(); // 如果你是在node环境下 你会发现打印出来的是undefined;只有在web环境下才会打印出来123字符串
node环境: 全局环境对象为 global
浏览器环境: 全局环境对象为 window
怎么判断你的环境下全局变量: 可以通过console.log(globalThis)。打印可以看出来你的全局变量是window还是 global。
下面分别是在浏览器和node.js环境下打印的globalThis:
在浏览器环境下声明全局变量:
var str = '1234'; // 会被挂载到window下,第一种声明
str1 = '12'; // 第二种声明
window.str2 = '234'; // 第三种
在node环境下声明全局变量:
在node.js环境下,var声明的变量并不会挂载到全局对象global中。 其声明的变量作用域为函数作用域。
global.str = '1234';
str1 = '213';