代码之家  ›  专栏  ›  技术社区  ›  Gaurav Chaudhary

fat arrow函数中的“this”与通过babel编译的输出

  •  2
  • Gaurav Chaudhary  · 技术社区  · 8 年前

    有人能解释一下这种行为吗? 此代码段输出 Window

    (()=>{
      console.log(this);
    })()
    

    但其使用babel的编译输出是

    "use strict";
    
    (function () {
      console.log(undefined);
    })();
    

    此输出 undefined

    如果babel只是在编译,那么这两种情况下的输出不应该相同吗?为什么? this 转换为 未定义 在巴别塔输出中?

    1 回复  |  直到 8 年前
        1
  •  5
  •   Tamas Hegedus    8 年前

    Babel假设您的输入代码是 单元 ,模块在 严格模式 . 因此,当粘贴到浏览器的开发人员控制台时,上述代码相当等同于:

    (function() {
      "use strict";
      (()=>{
        console.log(this);
      })();
    })();
    

    哪个打印 undefined .