Javascript 我可以阻止babeljs将函数转换为本地变量吗?

Javascript 我可以阻止babeljs将函数转换为本地变量吗?,javascript,angularjs,ecmascript-6,babeljs,Javascript,Angularjs,Ecmascript 6,Babeljs,我有一个用ES2015编写的应用程序,我正在使用babeljs将代码传输到ES5。我有一个包含代码的函数,但该函数被转换为分配给var的函数表达式。这通常很好,但我的JavaScript代码中有许多包装器,它们将输出babel包装成各种输出(一个用于将对象加载到窗口,另一个用于将其包装到角度服务中等),这样就可以以多种方式使用它 我试图使用Angular来使用它,下面是源代码(ES2015)的一个示例: 这可转化为: var code = function code() { return {

我有一个用ES2015编写的应用程序,我正在使用babeljs将代码传输到ES5。我有一个包含代码的函数,但该函数被转换为分配给
var
的函数表达式。这通常很好,但我的JavaScript代码中有许多包装器,它们将输出babel包装成各种输出(一个用于将对象加载到窗口,另一个用于将其包装到角度服务中等),这样就可以以多种方式使用它

我试图使用Angular来使用它,下面是源代码(ES2015)的一个示例:

这可转化为:

var code = function code() {
  return {
    function1: function1
    function2: function2
  };

  function function1() {
    var foo = "bar";
    //..
  }

  function function2() {
    //..
  }
}
请注意,整个事件被分配给名为
code
var

在我的包装器中,我将其包装在一个角度服务中,如下所示:

(function () {
    angular
        .module(angular._MODULE_)
        .service('someService', code);

    <%- include('../lib/code.js') %>
}());
(函数(){
有棱角的
.模块(角度模块)
.服务(“某些服务”,代码);
}());
其中
。/lib/code.js
是传输的ES5输出

这对angular没有好处,因为它无法访问本地变量


我怎样才能阻止巴贝尔将其分配给var

你不应该指望吊到巴贝尔不知道的范围内。要么先包装ES6并传输整个脚本,要么只使用

(function () {
    <%- include('../lib/code.js') %>

    angular
        .module(angular._MODULE_)
        .service('someService', code);
}());
(函数(){
有棱角的
.模块(角度模块)
.服务(“某些服务”,代码);
}());

相反。

Afaik,只有当您将函数声明放在块中时,Babel才会这样做。谢谢,虽然这几乎肯定是正确的,但实际上我有点傻。我在atom中打开了传输文件,我想babel无法输出新文件,因为我正在进行更改。我没有得到任何更新的输出,所以假设我尝试的东西不起作用。更新,这正是我选择的方法,而不是将常量更改为函数,再次感谢:)
(function () {
    <%- include('../lib/code.js') %>

    angular
        .module(angular._MODULE_)
        .service('someService', code);
}());