全局作用域中,用 const 和 let 声明的变量不在window 上,那到底在哪里?如何去获取?

305 阅读1分钟

对于使用 const 和 let 声明的变量,它们只会存在于块级作用域中,而不是全局作用域中。因此,它们并不会被添加到 window 对象上,也无法通过 window 对象进行访问。

如果想要获取在块级作用域中声明的变量,可以在定义时使用 var 关键字或者将该变量赋值给一个全局对象属性。例如:

// 使用 var 定义的变量会被添加到 window 对象中
var a = 1;
console.log(window.a); // 1

// 将 let 定义的变量赋值给全局对象属性
let b = 2;
window.b = b; // 或者使用 globalThis.b = b;
console.log(window.b); // 2

需要注意的是,在代码中滥用全局变量是一种不良的编程习惯,容易造成命名冲突和代码耦合度过高等问题。如果可能的话,应该尽量避免在全局作用域中定义变量和函数,并采用模块化开发的方式来管理代码。