首页>>技术分享>>html相关>es6快速入门(一)let变量和更严格的作用域

es6快速入门(一)let变量和更严格的作用域

大路 html相关 2023-10-13 200

es6对变量做了更严格的规范


ES5 只有两种声明变量的方法:var命令和function命令。ES6 除了添加letconst命令,后面章节还会提到,另外两种声明变量的方法:import命令和class命令。所以,ES6 一共有 6 种声明变量的方法。


1、let声明


除了传统的var以外,新增let,作为内部变量,var则作为全局,类似java的private和public


2、const变量,这个主要用在node,前端没什么意义,字面意思,const声明一个只读的常量。一旦声明,常量的值就不能改变。但是const作用域和let差不多,作用域在声明内部才可以使用


3、顶层对象,在浏览器环境指的是window对象,在 Node 指的是global对象。ES5 之中,顶层对象的属性与全局变量是等价的。


  • 浏览器里面,顶层对象是window,但 Node 和 Web Worker 没有window

  • 浏览器和 Web Worker 里面,self也指向顶层对象,但是 Node 没有self

  • Node 里面,顶层对象是global,但其他环境都不支持。


  • ES6 为一方面规定,为了保持兼容性,var命令和function命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩。


ES2020 在语言标准的层面,引入globalThis作为顶层对象。也就是说,任何环境下,globalThis都是存在的,都可以从它拿到顶层对象,指向全局环境下的this


标签: