美文网首页
let和const

let和const

作者: 陶六六 | 来源:发表于2018-08-19 19:33 被阅读0次

    let和const

    1. es5不存在块级作用域,所以在es5中,代码块中定义的变量,函数都会提升到函数顶部;es6存在块作用域,所以只在声明的代码块里有效
    2. 不存在变量提升,声明会绑定当前的块级作用域,在当前作用域声明之前会形成TDZ(暂时性死区)
    3. 在同一作用域里不允许重复声明
    4. const规定定义变量的内存地址保存的值不变,对于简单类型,保存的是具体值,所以相当于常量;声明的变量是数组、对象等复合类型,存储的是指向具体值的指针,所以指向不能变,但内容可变
    5. const声明时必须初始化
    6. 全局定义的const和let变量不会绑定为顶层变量的属性(global/window)

    tips

    1. for循的头部和循环体是父子作用域关系,循环体内定义同名变量可以覆盖父作用域定义的变量
          for(let i=0;i<3;i++){
              console.log(i)
          }
          //0
          //1
          //2
          for(let i=0;i<3;i++){
              let i='abc'
              console.log(i)
          }
          //abc
          //abc
          //abc
      
    2. TDZ导致typeof不再是安全操作,在TDZ不能以任何方式引用尚未定义变量
    3. 隐藏的TDZ
          let x=x //ReferenceError: x is not defined 在x定义前使用了x
          function(x=y,y=2){} //ReferenceError: y is not defined 在y定义前将y赋给x
      
    4. 块作用声明必须显示{}包裹
          if(1){
              let a = 1
          }
          //正确
      
          if(1)
              let a = 1
          // 报错
      
    5. es6存在六种声明方式
      • var
      • function
      • let
      • const
      • import
      • class

    相关文章

      网友评论

          本文标题:let和const

          本文链接:https://www.haomeiwen.com/subject/ttqhiftx.html