来自同一源的导入函数是否可以访问其源全局变量?
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()
读取 STORAGE
从 read.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。
好吧,我搜索了我知道的每个站点,使用了我知道的每个关键字,但我没有找到与我搜索的主题相近的东西,也许整个问题都是错误的,但无论如何...
假设我们有一个名为 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()
读取 STORAGE
从 read.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。