来自同一源的导入函数是否可以访问其源全局变量?

Does imported functions from the same source, have access to their source global variables?

好吧,我搜索了我知道的每个站点,使用了我知道的每个关键字,但我没有找到与我搜索的主题相近的东西,也许整个问题都是错误的,但无论如何...

假设我们有一个名为 Index.js 的模块,其中包含一个 STORAGE 和两个负责 reading/writing 到 STORAGE 的函数。

var STORAGE = []

function writeStorage(data) {
  STORAGE.push(data)
}

function readStorage(data) {
  //find data in STORAGE... and return result as RES
  return RES
}

现在,在名为 write.js 的文件中,我们导入 writeStorage().

在另一个名为 read.js 的文件中,我们导入 readStorage().

这就是问题所在,

从同一源导入的函数是否可以访问其源全局变量?

即,我们可以使用我们在 write.js 中导入的 writeStorage() 修改 index.js 中的 STORAGE 吗?

并使用 readStorage() 读取 STORAGEread.js 的变化 ?.

简短回答:是的,这是可能的。

我想就此提供更明确的答案。函数有两个作用域:词法作用域和动态作用域。 Dynamic 意味着,一个函数将搜索区域中的变量,调用:

let someVar = 'global';

function dynamicScope () {
    someVar = 'dynamic';
    console.log(somevar);
}

dynamicalScope(); // will display 'global'

Lexical 意味着,该函数将搜索变量所在的位置 written/declared:

let someVar = 'global';

function lexicalScope () {
    someVar = 'lexical';
    console.log(somevar);
} 

lexicalScope(); // will display 'lexical'

但是在JavaScript中,无法使用动态作用域,所以所有函数都将搜索变量它所在的地方[=35] =].

不要注意细节,这只是一个 PSEUDO-CODE。