ES6——let与const

  • let (定义变量)

    • 代码块内有效

      {
          let a = 1
          console.log(a)	//1
      }
      console.log(a)	//ReferenceError: a is not defined
      
    • 不能重复声明

    • 不存在变量提升

  • const (定义常量)

    • 一旦声明必须初始化
    • 声明之后不允许改变

    const如何做到声明初始化后不允许改变的?

    保证变量指向的内存地址所保存的数据不允许改动,对于简单类型,值就保存在变量指向的那个内存地址,因此 const 声明的简单类型的变量等同于那个常量。而复杂类型、变量指向的内存地址其实是保存了一个指向实际数据的指针,所以 const 只能保证指针是固定的,至于指针指向的数据结构变不变就无法控制了,所以使用 const 声明复杂类型对象时要慎重

  • 暂时性死区

    代码块内如果存在 let 或则 const ,代码块会对这些命令的变量从块的开始形成一个封闭作用域。在声明变量 PI 之前使用它会报错

    var PI = 'a'
    if(true){
        console.log(PI)//ReferenceError: a is not defined
        const PI = '3.14'
    }
    
原文地址:https://www.cnblogs.com/angle-yan/p/13370830.html