Javascript 如何在局部范围内更改全局变量的值?

Javascript 如何在局部范围内更改全局变量的值?,javascript,Javascript,我需要在函数范围内更改全局变量的值 const func=()=>{ 设a='a'; 常量alter=()=>{ a=‘c’; } const ver=()=>{ 控制台日志(a) } alter() ver() } func()听起来您可能正在努力解决JavaScript中作用域的工作方式 首先,在您的示例中没有声明全局变量。调用alter时,它会查找其范围内不存在的a。因此,它看起来像是funcfunc声明了a,因此这是作用域链的终点,而被修改的a是func中的一个 如果您希望a是“全局的

我需要在函数范围内更改全局变量的值

const func=()=>{
设a='a';
常量alter=()=>{
a=‘c’;
}
const ver=()=>{
控制台日志(a)
}
alter()
ver()
}

func()听起来您可能正在努力解决JavaScript中作用域的工作方式

首先,在您的示例中没有声明全局变量。调用
alter
时,它会查找其范围内不存在的
a
。因此,它看起来像是
func
func
声明了
a
,因此这是作用域链的终点,而被修改的
a
func
中的一个

如果您希望
a
是“全局的”,则必须将声明提升到任何函数的范围之外。这将导致您的示例在全局范围内修改
a

但是,如果您的示例保持原样,并在全局范围内声明另一个
a
(即,您有两个
a
的声明),那么您的示例将修改
func
a
的值,而不是全局
a

如果您想在范围链的中间有另一个具有相同名称的变量来修改全局变量,则可以这样做:

设a='b';//这是我们的全球“a”宣言
常量func=()=>{
设a='a';//这里我们在'func'的范围内声明一个新的'a'`
常量alter=()=>{
window.a='c';//修改全局'a'`
}
const ver=()=>{
console.log(window.a);//这将记录'c`
/* 
*下面的日志将输出'a',因为它引用的是第一个'a'`
*沿作用域链声明,该作用域链位于“func”(外部作用域)中
*而且它还没有被修改。
*/
控制台日志(a);
alter();
ver();
}
func();

这正是您的代码所做的。(除了
a
不是全局变量,它只是在外部范围内)我看不到任何全局变量请告诉我我的答案是否有帮助,如果没有,原因是什么?你的问题令人困惑,因为你没有声明任何全局变量。因此,如果答案没有帮助,也许你需要澄清你的问题。