代码之家  ›  专栏  ›  技术社区  ›  OneOfOne

如何将babel输出类作为命名函数?

  •  1
  • OneOfOne  · 技术社区  · 7 年前

    现在它可以翻译 class X { ... } var X = function X(...) { ... } ,如何将其输出为 function X (...) { ... } ?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Estus Flask    7 年前

    函数声明和ES6类之间的区别在于,函数声明是挂起的:

    console.log(Foo); // Foo
    function Foo() {}
    

    类处于暂时死区:

    console.log(Foo); // ReferenceError
    class Foo {}
    

    将类转换为函数声明是不正确的,ES6类的正确函数表示形式是:

    const Foo = function Foo() {};
    

    因为没有 const 在ES5中,Babel将其传输到 var ,还尝试在可能的情况下模拟时间死区 respective transform 已启用。