美文网首页
ES6的全局对象属性

ES6的全局对象属性

作者: 博为峰51Code教研组 | 来源:发表于2017-05-04 20:29 被阅读0次

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

    例如

    输出结果:

    1

    2

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

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

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

    运行结果:

    1

    undefined

    相关文章

      网友评论

          本文标题:ES6的全局对象属性

          本文链接:https://www.haomeiwen.com/subject/osmdtxtx.html