代码之家  ›  专栏  ›  技术社区  ›  Ben Aston

观察租赁申报单的吊装

  •  0
  • Ben Aston  · 技术社区  · 5 年前

    用户能否观察到用 let (或 const )?

    我这么问是因为在词法声明之前引用标识符总是会导致 ReferenceError 仿佛它没有被吊起。

    假设严格模式:

    { a; console.log(a); let a; } // ReferenceError: Cannot access 'a' before initialization
    { a; console.log(a); let b; } // ReferenceError: a is not defined
    

    不同的文本错误描述是观察用户土地吊装的唯一有意义的方法吗?

    4 回复  |  直到 5 年前
        1
  •  2
  •   Bergi    5 年前

    提升的主要用例是函数声明引用其声明上方的变量,并且标识符仍然始终引用相同的局部变量。(当然,时间死区仍然存在,所以在变量初始化之前,你不能调用函数):

    function log() {
      console.log(x);
    }
    try { log(); } catch(e) {} // not a global variable reference
    let x = "example";
    log();
    
        2
  •  1
  •   Pankaj Garg    5 年前

    不, let和const确实像var一样提升。唯一的区别是let和const初始化时没有值,你不能使用任何尚未初始化的变量(这就是为什么你会得到这个错误“初始化前无法访问'a'”); 当你使用var声明时,它会被初始化为undefined;

        3
  •  0
  •   Bergi    5 年前

    Yes.

    x = "global";
    // function scope:
    (function() {
        x; // not "global"
    
        let x;
    }());