let、const、var的区别? 变量提升? 暂时性死区?
var: 全局变量 全局使用 拥有变量提升特性(在声明之前使用 值为undefined) 可通过window访问;
let: 块作用域 可以任意修改值 不能定义同一作用域的同名变量 不能先使用再声明 拥有暂时性死区;
const: 同let一样块作用域 没有变量提升特性 不能重复定义 拥有暂时性死区
不同点:const声明时必须赋初始值 且初始值的地址不可修改 但可以修改初始地址上对应的值
为什么const有些时候可以修改变量的值?
Const值判断地址指向是否一样 对其进行操作只要最后地址指向还是同一个是允许修改的
什么叫变量提升?
JavaScript中 函数及变量的声明都将被提升到函数的最顶部 变量可以在使用后声明 也就是变量可以先使用再声明 var声明的变量存在变量提升 let和const不存在变量提升;
什么叫暂时性锁区?
JavaScript中 声明一个var变量a 在块级作用域中又用let声明了一个同名变量即变量a 那么在块级作用域内let声明语句之前使用变量a则会报错即暂时性死区 let只能先声明再使用 同名变量a在块级作用域中用let又声明一遍 则默认之前变量a为先使用未声明
纯粹个人理解 语言上可能有一些不恰当的表达或是有其他知识没有提到欢迎补充~