var let const 区别

73 阅读1分钟

个人整理,认为最重要的两个区分点 1、变量提升 2、 作用域问题

变量提升。

var 和 let cons 都会产生变量提升。不过和var的变量提升不在一个阶段

var的变量提升,在声明之前可以调用,声明阶段就有的变量提升

var 的「创建」和「初始化」都被提升了

let 、const存在一个暂时性死区(暂时性死区:创建了变量但是没有初始化,没法使用变量)

let 的「创建」过程被提升了,但是初始化没有提升

function 的「创建」「初始化」和「赋值」都被提升了

最后看 const,其实 const 和 let 只有一个区别,那就是 const 只有「创建」和「初始化」,没有「赋值」过程。

作用域问题

let 跟 var 的作用差不多,但有着非常重要的区别。最明显的区别是,let 声明的范围是块作用域, 而 var 声明的范围是函数作用域。

var 没有块级作用域的概念,如果想搞出来一个保护内部变量的方法,可以使用闭包解决

let、const 有块级作用域的概念,局部作用域内部的大括号‘{}’,被称为块级作用

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