收藏
回答

在switch-case语句中使用函数声明, 开启增强编译会报错?

//源码
switch (true) {
  case true:
    A()
    function A() {


    }
    break
}

//开启JS编译成ES5选项后
switch (true) {
  case true:
    A();


    var A = function A() {};


    break;
}

编译后 函数声明变成了变量声明

微信开发者工具 1.05.2107072

代码片段 https://developers.weixin.qq.com/s/umiD2Kmp77rI


最后一次编辑于  07-12
回答关注问题邀请回答
收藏

2 个回答

  • John von Neumann
    John von Neumann
    07-13

    增强编译使用到 babel 7 去转换代码,这是 babel 7 转换出来的结果。

    确实 babel 在这里转换有点问题,麻烦先规避一下这种写法。

    我们也向 babel 社区反馈一下。

    07-13
    有用
    回复 1
    • Jesse
      Jesse
      07-13
      暂时无法避免, 我用的其它babel插件先传译源码, 生成的以上代码,交给小程序开发工具编译后就会出问题
      07-13
      回复
  • 社区技术运营专员-Jahozheng
    社区技术运营专员-Jahozheng
    07-13

    ES6转ES5和增强编译合并成将JS 编译成 ES5,如仅需ES6转ES5,可在 project.config.json 文件 setting 中,将showES6CompileOption 设置为 true

    07-13
    有用
    回复 1
    • Jesse
      Jesse
      07-13
      仅开启ES6转ES5也会出现同样的问题
      07-13
      回复
登录 后发表内容