Javascript:如何从另一个导入的模块内部访问导入的模块变量?
我有一个脚本,可以导入许多不同的文件,如下所示:Javascript:如何从另一个导入的模块内部访问导入的模块变量?,javascript,javascript-import,Javascript,Javascript Import,我有一个脚本,可以导入许多不同的文件,如下所示: <script type="module"> import * as A from '...'; import * as B from '...'; import * as C from '...'; 如果我在所有其他导入之后添加导入,如: <script type="module"> import * as A from '...'; import * as B from '..
<script type="module">
import * as A from '...';
import * as B from '...';
import * as C from '...';
如果我在所有其他导入之后添加导入,如:
<script type="module">
import * as A from '...';
import * as B from '...';
import * as C from '...';
import * as my from 'myfile.js';
我还可以从模块内部访问全局变量,例如:
import * as A from ....
console.log(A);
import * as B from ...
console.log(B);
import * as my from 'myfile.js'
myfile.js:
var init = (function (t) {
console.log(t);
})(window.innerWidth);
export { init };
这个打印窗口宽度
我正在寻找类似的功能:
var init = (function (t) {
console.log(t);
})(A);
export { init };
回调函数非常类似于导入我的模块,然后调用一个函数并将一个作为参数传递给它,我可以在没有回调的情况下完成它。你不能。模块解析的实现完全是为了不拖拉全局范围,避免程序员问“这个变量还存在吗?”。 因此,您可以使用旧样式的JavaScript,禁用模块系统。不要将“myfile”用作模块,而是将其用作全局导入:
<script src="myfile.js"></script>
另外,您正在混合新旧语法您正在将它们作为一个组件导出,我猜是使用{}括号进行初始化。如果要将它们作为组件导出,则必须在导出的模块旁边使用默认关键字。尝试导出默认值{init}在JavaScript中,作用域由代码块、函数和模块创建。 因此,在模块外部无法访问模块变量(除非使用export显式导出) 如果您想在myFile.js中使用A、B、C,那么应该在
myFile.js中导入它们
所以myFile.js
应该是:
import*作为从“…”导入;
将*作为B从“…”导入;
将*作为C从“…”导入;
var init=(函数(){
控制台日志(A、B、C);
})();
导出{init};
这里有一些关于变量导入后立即退出的有用文章,如果这很重要的话。如果I console.log A、B、C紧跟在它们各自的导入语句之后,它们将被打印出来。你是说我不能访问模块范围之外的任何东西?你太自信了!我不会的。是,您无法访问模块范围之外的任何内容。这是模块的主要目的我很有信心,因为我运行代码-请参阅我的编辑-并且它可以工作。
var init = (function (t) {
console.log(t);
})(A);
export { init };
<script src="myfile.js"></script>
var init = function (cb) {
cb();
};
// use:
import {init} from ...
init(() => console.log(A,B,C));