ES6的全局对象属性

2017-05-04  本文已影响0人  博为峰51Code教研组

全局对象是指最顶层的对象,在浏览器环境下是指window对象。在ES5中,全局对象的属性和全局变量是等价的。

例如

输出结果:

1

2

a是全局对象window的属性,b是全局对象,所以对全局对象属性的赋值和全局对象的赋值,实际就是一回事。

从上述代码可以看出,未声明的全局变量,会自动认为全局变量window的属性,这是被人们认为是javaScript设计的败笔之一。这样的设计带来了两个很大的问题,首先是没法在编译时就报出变量未声明的错误,只有运行时才能知道,其次程序员很容易不知不觉地就创建了全局变量(比如打字出错)。另一方面,从语义上讲,语言的顶层对象是一个有实体含义的对象,也是不合适的。

那么在ES6语法中,改变了这一弊端。ES6规定为了保持浏览器的兼容性,使用var,function声明全局变量,仍然是全局对象的属性。另一方面规定let,const,class命令声明的全局,不属于对象属性

运行结果:

1

undefined

上一篇下一篇

猜你喜欢

热点阅读