let、const有没有变量提升?

首先说明,let、const也存在变量提升,不过和var的变量提升不在一个阶段。
var和let、const的区别:
1.var的变量提升,在声明之前可以调用,声明阶段就有的变量提升 ; let 、const存在一个暂时性死区(暂时性死区:创建了变量但是没有初始化,没法使用变量,“Cannot access 'value' before initialization”),只在变量创建阶段有提升,在初始化阶段没有提升,形成的暂时性死区。

2.var 没有块级作用域的概念,如果想搞出来一个保护内部变量的方法,可以使用闭包解决 ; let、const 有块级作用域的概念,局部作用域内部的大括号‘{}’,被称为块级作用域

3.var 可以重复声明同一个变量,let、const不能,const声明的变量不能直接修改值

posted @ 2021-04-30 10:34  收藏小能手  阅读(1786)  评论(2编辑  收藏  举报