通过var关键词定义的全局变量属于window对象

  在浏览器环境下,通过var关键词定义的全局变量确实会成为window对象的属性。这是因为在浏览器中,所有全局作用域中声明的变量和函数都被视为window对象的属性和方法。
 
  例如,以下代码定义了一个全局变量myGlobalVar:
 
  varmyGlobalVar="hello";
 
  在浏览器环境下,可以通过访问window.myGlobalVar来访问这个变量:
 
  console.log(window.myGlobalVar);//输出"hello"
 
  需要注意的是,如果使用let或const关键字声明变量,它们不会成为window对象的属性。这是因为let和const关键字定义的变量不属于全局对象,而是属于它们所在的块级作用域。
 
  在ES6中,我们还引入了一个新的关键字let和const用于声明变量,与var不同的是,let和const关键字定义的变量不会成为全局对象的属性,而是作用于它们所在的块级作用域中。
 
  letmyVariable="hello";
 
  constmyConstVariable="world";
 
  console.log(window.myVariable);//输出undefined
 
  console.log(window.myConstVariable);//输出undefined
 
  在上面的例子中,我们使用let和const关键字声明了两个变量,它们不会成为window对象的属性。所以访问window.myVariable和window.myConstVariable都会输出undefined。
 
  需要注意的是,如果我们在Node.js环境下使用var关键字定义全局变量,它们不会成为global对象的属性。而是作用于当前模块的作用域中。而使用let和const关键字定义的全局变量同样不会成为global对象的属性。这是因为Node.js中每个模块都是一个独立的作用域。