首先說明,let、const也存在變量提升,不過和var的變量提升不在一個階段。
var和let、const的區別:
1.var的變量提升,在聲明之前可以調用,聲明階段就有的變量提升 ; let 、const存在一個暫時性死區(暫時性死區:創建了變量但是沒有初始化,沒法使用變量,“Cannot access 'value' before initialization”),只在變量創建階段有提升,在初始化階段沒有提升,形成的暫時性死區。
2.var 沒有塊級作用域的概念,如果想搞出來一個保護內部變量的方法,可以使用閉包解決 ; let、const 有塊級作用域的概念,局部作用域內部的大括號‘{}’,被稱為塊級作用域
3.var 可以重復聲明同一個變量,let、const不能,const聲明的變量不能直接修改值
