聊聊var与let 在window下面的区别(除开作用域)

Posted xweizi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聊聊var与let 在window下面的区别(除开作用域)相关的知识,希望对你有一定的参考价值。

关于let在window下面访问时无法获取到的原因:

  先看代码:

 

var age = 29;
let ages = 29;
alert(window.age)
alert(window.ages )

技术分享图片技术分享图片

  由此可以看的出来,为什么同为window下面的全局变量;

    var定义的变量可以获取到 而let不可以?

那么问题来了其他定义变量的方法如:es6的let、const、import、class再加上ES5的var、function 一起6种声明变量的方式

 有什么规律呢?共同点呢?

进入正题:我们来了解下吧

 首先我们需要了解浏览器环境中顶层对象是window,Node中是global对象

 (重点了)es5中顶层变量的属性等价于全局变量,

  到了es6中有所改变,es5的var function 声明的全局变量 依旧是顶级对象的属性 而es6声明的全局变量不属于顶级对象的属性了

 

以上是关于聊聊var与let 在window下面的区别(除开作用域)的主要内容,如果未能解决你的问题,请参考以下文章

用下面的代码解释一下javascript中var和let关键字的区别

var与letconst的区别

var与letconst的区别

let与var的几个主要区别

var/let/const的区别

IF 一个函数被赋值给一个使用 var 声明的变量和 let 有啥区别?