ES6_入门(3)_顶层对象属性

 1 //顶层对象属性:在ES5中,顶层对象的属性与全局变量是等价的.以下代码中,为顶层对象的属性赋值与全局变量的赋值,是同一件事。
 2         window.a=10;
 3         console.log(window.a);//10
 4         a=40;
 5         console.log(window.a);//40
 6 
 7         //2
 8         //顶层对象属性与全局变量挂钩的缺点:
 9         //(1)无法在编译时就报出变量未声明的错误。
10         //(2)容易无意间创建全局变量。
11         //(3)顶层对象的属性是到处可以读写的,不利于模块化编程。
12         //(4)window对象是实体含义,指的是浏览器的窗口对象,顶层对象的是一个有实体含义的对象,不是很合适。
13 
14         //3 ES6规定
15         // 为了保持兼容性,var命令和function命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从ES6开始,全局变量将逐步与顶层对象的属性脱钩。
16 
17         var a=1;
18 
19         console.log(window.a);//1
20         let b=1;
21         console.log(window.b);//undefined
原文地址:https://www.cnblogs.com/LinSL/p/7159568.html