let var const 之间的区别以及暂时性死区

228 阅读1分钟

let var const 之间的区别

三者都是相同点就都是声明变量的方式,

三者之间的区别就是:

在JS函数中的var声明,其作用域是函数体的全部,最明显的例子便是在定义循环变量的时候 外部也能访问到这个循环变量,这样就造成了循环变量的过渡共享.

相对于var,因为let声明的变量具有块级作用域,相对var声明的变量来说,保留了提升的性质但不会盲目提升(创建的过程提升了,但是初始化的时候并没有提升),mdn文档上直接表明let不会被提升,是因为这里涉及到暂时性死区的内容,通过let声明的变量还有两个比较重要的特点就是不能被重复声明同一个变量 以及声明的全局变量并不是全局对象window的属性

const最简单暴力的理解就是定义一个常量 一定要在声明变量的时候进行初始化值 原理是不修改变量的内存地址就不会报错

拓展

因为对象是引用数据类型 修改对象的属性知识修改数据值本身 对象的内存地址不会发生改变 所以不会报错1

暂时性死区

原理: 在使用let或者const 声明变量的时候 在没有使用let或者const声明之前 这个变量都是不可用的

作用:

为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。