Varible

作者: zdxhxh | 来源:发表于2019-11-05 09:44 被阅读0次

    一、变量

    关键字 特点
    var 1. 可以重复声明
    2. 无法限制修改
    3. 没有块级作用域
    4. 变量提升
    let 1. 不能重复声明
    2. 可以修改
    3. 不存在变量提升
    const 1. 不能重复声明
    2. 不存在变量提升

    暂时性死区

    let/const声明的变量,这个区块{}会形成封闭的作用域

    在这个作用域内,在let/const关键字之前使用这些变量,就会报错

    TDZ暂时性死区就是指 : let/const关键字之前的代码块

    // TDZ start 
    typeof tep  // Reference Error
    // TDZ end 
    let tep = ''
    

    但神奇的是,如果对未使用的变量使用typeof ,反而不会报错

    函数式死区

    有些死区非常隐蔽,可能面试会搞你

    function bar(a=b,b=3){ 
      return [a,b]
    }
    bar() // 报错
    

    这是因为,使用函数默认值 在编译后,会使用let变量声明

    function bar(a,b) { 
      let a = b 
      let b = 3 
    }
    

    块级作用域

    在ES6中,{},使用花括号即可建立一个块级作用域

    {
      let a = 3
      {
        console.log(a)  // logs 3
      }
    }
    

    块级作用域是IIFE不再必要了
    回想以下IIFE的作用

    • 避免函数命名空间污染
    • 通过创建函数作用域避免函数内变量污染全局作用域
    • 函数自调用

    相关文章

      网友评论

          本文标题:Varible

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