我正在尝试阅读打字稿文档,以了解与ES6模块相同的模块。
typescript-modules-打字稿模块的文档。它说
模块在它们自己的范围内执行,而不是在全局范围内执行;这意味着在模块中声明的变量,函数,类等在模块外部是不可见的,除非使用导出形式之一显式导出它们。相反,要使用从其他模块导出的变量,函数,类,接口等,则必须使用一种导入形式将其导入。
和
在TypeScript中,就像在ECMAScript 2015中一样,任何包含顶级导入或导出的文件都被视为模块。相反,没有任何顶级导入或导出声明的文件将被视为脚本其内容在全局范围内可用(因此也适用于模块)。
它表示文件中没有导入或导出语句的所有内容在全局范围内都是可用的。但这不是真的。
script1.js
var variable = "Hello";
script2.js
console.log(variable);
根据文档中编写的语句,当我运行script2.js时,它不应出现任何错误并可以控制变量的值,因为script1.js没有import,export语句,因此该变量在全局变量中可用范围。但它给出了一个错误。那么,脚本的内容在全局范围内是什么意思?
答案 0 :(得分:0)
在HTML文件中,如果您执行<script scr="./script2.js" /><script scr="./script1.js" />
,则会在控制台中看到Hello
。