let 声明的变量顶层对象和全局变量的关系
顶层对象:
在浏览器环境中,顶层对象就是window对象,在Node环境中顶层对象是global对象,在Es5时,顶层对象的属性和全局变量是等价的。
window.a=1
a//1
a=2
window.a//2
在上面的代码中,顶层对象的属性赋值与全局变量的赋值是一样的。
顶层对象的属性与全局变量挂钩,被认为是 JavaScript 语言最大的设计败笔之一。这样的设计带来了几个很大的问题,首先是没法在编译时就报出变量未声明的错误,只有运行时才能知道(因为全局变量可能是顶层对象的属性创造的,而属性的创造
原创
2020-12-25 00:14:42 ·
669 阅读 ·
0 评论