ES2015导出内部功能

ES2015 Export inside function

本文关键字:功能 内部 ES2015      更新时间:2023-09-26

我正在学习ES2015的导出功能。我试着在网上理解它,但我的疑虑仍然没有得到解决

当我在匿名函数中声明导出时,jshint显示以下错误(至少在Intellij插件中):

E053出口申报必须在全局范围内。

相反,JSHint总是要求将整个代码封装在Anonymous函数中。如果我用以下方式写代码:

export const MY_CONSTANT = 1000;
(function(){
   'use strict';
    //Complete code goes here
}();

我们必须在页面的顶部和底部写很多代码。有些代码会从文件之间跳转到页面的开头(或结尾)。

我能解释它的最好方法是javascript IIFE是创建封装的方法。您可以将模块的代码放在一个内部,并返回某种类型的和对象。如果您需要将代码导入其中,您可以使用参数进行导入。新的模块语法允许您以不同的方式执行相同的操作。将导入视为IIFE的自变量,将导出视为返回。以下是Mozilla导入导出语法的完整解释https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import

此外,如果你想探索更多,我已经创建了一些使用babel、gull、browserfy和jasmine的样板,这样我就可以编写es2015的所有代码。https://github.com/jamesrhaley/es2015-babel-gulp-jasmine.git

如果您使用ES2015模块语法,您可能不需要将代码包装在匿名函数中,因为模块加载器处理导出的代码。

我不确定每个模块加载程序,但当使用TypeScript+browserfy时,每个文件都会被包装,以防止变量扰乱全局命名空间。有关如何使用模块语法以及为什么可以全局声明变量的更多信息,请参阅es2015中的"为什么导出-导入声明必须处于顶级"。