let,var,const

87 阅读1分钟

1.全局的污染

var 会污染全局即在全局作用域中用var声明的变量会挂载到window上,但是要注意的是let,const声明的数据在<script>标签中也是会传递的

2.重复声明问题

var可以重复声明,let,const不能重复声明

3.作用域

var是全局作用域,let,const是块级作用域,只在块级区域内生效

4.变量提升和暂时性死区

这三者都会进行变量提升,但是let和const会形成一个暂时性死区

比如这个代码

       console.log(a);
       var a=1

浏览器会报undefined

image.png

如果是用const或let来声明的话就是报暂时性死区的错了

image.png

5.let 和 const

  • const声明的变量是不可改变的,let是可以改变的

值得说明的是

 const a = {
        name:'zs',
        age:10
      }
      a.name = 'lis'//正常更改
      a = {}//报错
      //出现这种情况是因为复杂数据类型存储在堆里,而更改里面的属性并没有改变整个对象指向的地址
  • let可以声明后再赋值,const必须在声明时就赋值