Javascript ES6模块的导入运行非exporeted函数

Javascript ES6模块的导入运行非exporeted函数,javascript,ecmascript-6,import,module,export,Javascript,Ecmascript 6,Import,Module,Export,我有两个文件:a.js和b.js 我把a导入b。 我在index.html中包含了b.js 为什么test2函数运行,即使我只导出了test函数而没有导出test2。 //a、 js function test(){ alert("Test") } function test2(){ alert("test2") } test2(); export {test} //b、 js import { test } from './a.js'; test() 因为您明确地将其作为定义

我有两个文件:a.js和b.js 我把a导入b。 我在index.html中包含了b.js

为什么test2函数运行,即使我只导出了
test
函数而没有导出
test2

//a、 js

function test(){
  alert("Test")
}
function test2(){
  alert("test2")
}
test2();

export {test} 
//b、 js

import { test } from './a.js';
test()

因为您明确地将其作为定义该模块的一部分来运行?你为什么认为不会呢?@jornsharpe,但我只是将
test
导入模块
b
。模块
a
的其余部分不应该从模块
b
中不可访问/不可执行吗?它不能从模块b中访问,但这并不意味着它永远不会运行。@jornsharpe我也有同样的问题。如何阻止函数外的代码运行?@RedGuy11然后将其拆分为两个文件,一个可从中导入,另一个可导入并运行。因为您在定义该模块时显式运行了它?你为什么认为不会呢?@jornsharpe,但我只是将
test
导入模块
b
。模块
a
的其余部分不应该从模块
b
中不可访问/不可执行吗?它不能从模块b中访问,但这并不意味着它永远不会运行。@jornsharpe我也有同样的问题。如何阻止函数外的代码运行?@RedGuy11然后将其拆分为两个文件,一个可从中导入,另一个可导入并运行。