• es6-let


    http://es6.ruanyifeng.com/?search=fetch&x=0&y=0#docs/lethttp://es6.ruanyifeng.com/?search=fetch&x=0&y=0#docs/let
    ● ES6规定暂时性死区和let、const语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在ES5是很常见的,现在有了这种规定,避免此类错误就很容易了。
    总之,暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。

    ● IIFE(立即执行函数)主要目的是做的一些封装,防止污染,以及保证内部变量的安全
    闭包严格来说,是一个函数执行之后,返回另外一个函数,返回的函数有前一个函数的内部变量的引用

    块级作用域的出现,实际上使得获得广泛应用的立即执行匿名函数(IIFE)不再必要了。

    // IIFE写法
    (function () {
      var tmp = ...;
      ...
    }());
    
    // 块级作用域写法
    {
      let tmp = ...;
      ...
    }
    
    
    1. 允许在块级作用域内声明函数。
    2. 函数声明类似于var,即会提升到全局作用域或函数作用域的头部。
    3. 同时,函数声明还会提升到所在的块级作用域的头部。
      ● 注意,上面三条规则只对ES6的浏览器实现有效,其他环境的实现不用遵守,还是将块级作用域的函数声明当作let处理。
    //考虑到环境导致的行为差异太大,应该避免在块级作用域内声明函数。如果确实需要,也应该写成函数表达式,而不是函数声明语句。
    
    // 函数声明语句
    {
      let a = 'secret';
      function f() {
        return a;
      }
    }
    
    // 函数表达式
    {
      let a = 'secret';
      let f = function () {
        return a;
      };
    }
    
    
  • 相关阅读:
    五月八日冲刺
    五月七号冲刺
    五月六日站立会议
    prufer序列学习笔记
    批量数据导入优化
    索引失效
    慢查询定位与分析
    redis主从同步
    redis RBD机制
    redis AOF机制
  • 原文地址:https://www.cnblogs.com/sakura-sakura/p/6678500.html
Copyright © 2020-2023  润新知