"这个"在胖箭头功能与通过巴贝尔编译输出

Gau*_*ary 3 javascript ecmascript-6 babeljs

有人可以解释这种行为吗?此代码段输出Window

(()=>{
  console.log(this);
})()
Run Code Online (Sandbox Code Playgroud)

但它使用babel的编译输出是

"use strict";

(function () {
  console.log(undefined);
})();
Run Code Online (Sandbox Code Playgroud)

这个输出 undefined

如果babel只是编译,那么在两种情况下输出都不应该相同吗?为什么this翻译成undefinedbabel输出?

Tam*_*dus 6

Babel假设您的输入代码是一个模块,并且模块以严格模式解释.因此,上面的代码粘贴到浏览器的开发者控制台时相当于:

(function() {
  "use strict";
  (()=>{
    console.log(this);
  })();
})();
Run Code Online (Sandbox Code Playgroud)

哪个打印undefined.