Javascript ES6模块范围

Javascript ES6模块范围,javascript,module,ecmascript-6,Javascript,Module,Ecmascript 6,我有密码: // lib.js var a = "a"; export var b = "b"; // main.js console.log(a); // "a" variable is not available in a global scope import {b} from "lib"; console.log(a); // is "a" variable available in a global scope or only in a module scope? 在模块导入后,我

我有密码:

// lib.js
var a = "a";
export var b = "b";

// main.js
console.log(a); // "a" variable is not available in a global scope
import {b} from "lib";
console.log(a); // is "a" variable available in a global scope or only in a module scope?
在模块导入后,我可以在全局范围内使用“a”变量吗?还是它仅在模块范围内可用?ES6模块是否具有类似于此技巧的工作原理:

// module    
exports.module1 = (function(){ var a = "a"; })(); // "a" variable is not available in a global scope
在模块导入后,我可以在全局范围内使用“a”变量吗?还是它仅在模块范围内可用

它只在声明它的模块中可用

ES6模块是否会有类似的工作原理,如以下技巧:[……]

基本上是的


ES6有以下几种作用域,从“顶部”到“底部”依次为:

  • 全球范围
  • 模块范围
  • 功能范围
  • 块范围

假设您正在将某些内容导出到另一个模块。示例:您正在导出
var b='b'
,但没有导出
var a='a'
。这意味着您只能在
lib.js
中使用
var a='a'
,它是在其中声明的模块的本地,并且只能在该模块中使用
var a
的作用域是
lib.js
模块

您可以执行
globalThis.a=“a”
并在加载该模块后访问它。见: