JavaScript 中的 var,let 和 const 有什么区别

本博客 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