本博客 hjy-xh,转载请申明出处
区别概述
- 变量提升
- 暂时性死区
- 块级作用域
- 重复声明
- 修改声明的变量
变量提升
var 声明的变量存在提升,即变量可以在声明之前调用,提升时不做初始化操作,故只为 undefined
let、const 不存在变量提升,故而用这两个关键字时,一定要在声明后使用
暂时性死区
var 不存在暂时性死区
let、const 存在暂时性死区,在变量被声明之后,才可以获取或使用该变量
块级作用域
var 不存在块级作用域
let、const 存在块级作用域
重复声明
var 允许重复声明变量
let 和 const 在同一作用域不允许重复声明变量
修改变量
var 和 let 可以随意修改声明的变量的值
const 一般用来声明一个只读的常量,一旦声明,常量的值就不能改变。
但实际上 const 保证的是变量指向的内存地址不变
- 对于简单类型的数据,值就保存在变量指向的内存地址,因此等同于常量。
- 对于复杂类型的数据,变量指向的内存地址保存的是一个指向实际数据的指针,const 只能保证这个指针是固定的,至于实际指向的数据是可以变的
参考
面试官:说说 var、let、const 之间的区别
let 和 const 命令
JavaScript 中的 Var,Let 和 Const 有什么区别
块级作用域:var 缺陷以及为什么要引入 let 和 const