zoukankan      html  css  js  c++  java
  • 暂时性死区

      es6 let命令声明变量,有个暂时性死区的坑。

      不是大问题,只是形成机制有意思,他在变量所在的代码块 内 也就是作用域内,

      如果代码还未执行到声明变量那行,对这个变量的操作时会丢出错误的。

      

    var tmp = 123;
    
    if (true) {
      tmp = 'abc'; //   => ReferenceError
      let tmp;
    }
    甚至于他对typeof 也会丢出错误,通常未声明的变量,会提示undefined;而不是丢出错误;
    function bar(x = y, y = 2) {
      return [x, y];
    }
    
    bar(); // 报错
    甚至于:
    // 不报错
    var x = x;
    
    // 报错
    let x = x;
    // ReferenceError: x is not defined

    暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。
    感谢阮一峰大神

     
  • 相关阅读:
    strncat_s
    资源编译器 (.rc) 文件
    C++ Namespace 详解
    Structure Definitions
    SetParent
    C++笔记(1)explicit构造函数
    .def
    tellg()和tellp()
    Data Groups
    Messages
  • 原文地址:https://www.cnblogs.com/fordouble/p/7064973.html
Copyright © 2011-2022 走看看