1、 var 与 let、const 区别
a、不存在变量提升
b、暂时性死区
c、不允许重复声明
d、块级作用域 (依赖于 a)
e、const 是常量生命,指向的是地址,要真正做到对象不可变 需要用 Object.freeze
f、es6 中变量生命方式变成了 6 种 var function let const class import
g、let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩。
var a=1; this.a window.a // 1
letb=1; window.b this.b / / undefined
h、全局环境中,this会返回顶层对象。但是,Node 模块和 ES6 模块中,this返回的是当前模块。
函数里面的this,如果函数不是作为对象的方法运行,而是单纯作为函数运行,this会指向顶层对象。但是,严格模式下,这时this会返回undefined
现在有一个提案,在语言标准的层面,引入globalThis作为顶层对象。也就是说,任何环境下,globalThis都是存在的,都可以从它拿到顶层对象,指向全局环境下的this。
网友评论