调用在另一个模块中使用全局变量的函数



如果我定义了一个依赖于(使用(其模块中全局变量的函数,那么如果我导出它并尝试在该模块之外调用它,会发生什么?

我尝试过它,发现它工作正常,尽管我没有访问该变量的权限(它没有在我的范围中定义(。所以我想确定,无论我是否理解这一点,这是否就像闭包函数一样,函数从词法范围中获取变量?

PS:我的问题与ES6模块功能有关。

#添加真正简单的示例

这是我的html:只是一个脚本

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<script type="module" src="app.js"></script>
</body>
</html>

这是我的模块文件:

let globalVariable = "I cannot be accessed outised this module";
export function testFunction() {
console.log(globalVariable);
}

这是我的app.js文件:

import { testFunction } from "./module.js";
testFunction();

尽管在app.js中无法访问globalVariable,但已在控制台中打印消息。

let globalVariable = "I cannot be accessed outised this module";

这不是全局的。它只是模块范围内的一个变量。

export function testFunction() {
console.log(globalVariable);
}

这个函数访问名为globalVariable的变量,无论它(函数(被传递到哪里,就像任何其他闭包一样。

进一步阅读:JavaScript闭包是如何工作的?

相关内容

  • 没有找到相关文章

最新更新