解析let和const声明的变量不在window下的原因
使用es5中 var
命令声明的变量可以在 window
下找到,比如:
var myName = 'mason'
,可以使用 window.myName
访问到。
但是使用es6的 let
和 const
声明的变量却没有在window下,这是为什么呢?
这里就要说到window
对象和 global
对象。
对于window和global的看法,之前一直都是:window是浏览器的顶层对象,global是node的顶层对象。
但是其实window是global在浏览器的代理,window是global的一部分。
我们使用var声明的变量会被挂载到window下。
而let和const声明的变量会被挂载到 script
对象下,script和global是同一层级的。