var,let,const区别


let 和 const以及var都是js用来生命变量的方法 他们三个的对比是一个高频面试题

 var 生命的变量在代码块外也可以获取到 并且存在变量提升 所谓变量提升指的是将变量的声明提升至当前作用域的最顶部

 {

     console.log(a)

       var a = 1

     }

    // 上面代码的运行顺序本质上是

     {

     var a; // 一个变量在声明了但未赋值的情况下 他的值是默认值也就是undefined

       console.log(a)

    a = 1

     }

    // let声明会将当前代码块转化为一个暂时性的死区 在外部无法获取代码块内声明的变量 let声明的变量没有变量提升 所以不能在声明之前使用

    // let 声明的变量如果没有赋值 那么他的默认值就是undefined 可以重新赋值

    {

      // console.log(a)

      // let a = 1 

      let a;

      a = 2

      console.log(a)

    }

// const声明会将当前代码块转化为一个暂时性的死区 在外部无法获取代码块内声明的变量

    // const 声明的变量没有变量提升 所以不能在声明之前使用

    // const 声明的是一个常量 一旦声明变量的值就不能改变了

    // const 声明变量不能重新赋值 但是如果值是一个引用数据类型 引用数据类型内部的数据可以修改

    {

       const obj = {

        name: 'zhangsan'

      }

      obj.name = 'lisi'

      console.log(obj)

    }

你可能感兴趣的:(var,let,const区别)