var
声明全局变量var globalVar = 'I am a global variable';
console.log(window.globalVar); // 输出: I am a global variable
在这个例子中,globalVar
被添加到了 window
对象上,可以通过 window.globalVar
访问。
let
声明全局变量let globalLet = 'I am a global variable with let';
console.log(window.globalLet); // 输出: undefined
在这个例子中,globalLet
没有被添加到 window
对象上,因此 window.globalLet
输出 undefined
。
var
声明的全局变量:当在全局作用域中使用 var
声明变量时,变量会被添加到 window
对象的属性上。这是因为 var
的作用域是函数作用域或全局作用域,且在全局作用域中,它的声明会影响到全局对象(window
)。
let
和 const
声明的全局变量:当使用 let
或 const
声明变量时,这些变量不会成为 window
对象的属性。let
和 const
的作用域是块级作用域,它们在全局作用域中的行为不同于 var
。全局变量 let
和 const
声明的变量不会挂载到全局对象上,避免了全局作用域的污染。
var
声明的全局变量会成为 window
对象的属性。let
和 const
声明的全局变量不会成为 window
对象的属性。使用 let
和 const
的好处在于它们提供了更精确的作用域控制,减少了潜在的全局变量污染,从而提高了代码的可维护性和安全性。