Javascript 我可以在闭包内更改全局变量的引用吗?

Javascript 我可以在闭包内更改全局变量的引用吗?,javascript,Javascript,我有一个函数,它引用了一个我无法更改的全局变量。是否可以修改特定调用的引用目标 有问题的代码位于外部库中,不在我的控制范围内 const globalValue='something' 常量foo=()=>{ console.log(全局值) } 我想修补函数,以便globalValue引用其他内容。大概是这样的: (()=>{ const globalValue=‘其他东西’ foo() })() 当然,上述方法不起作用,但我希望能够确保foo在这种情况下会记录“其他东西”,而不是原始的“

我有一个函数,它引用了一个我无法更改的全局变量。是否可以修改特定调用的引用目标

有问题的代码位于外部库中,不在我的控制范围内

const globalValue='something'
常量foo=()=>{
console.log(全局值)
}
我想修补函数,以便
globalValue
引用其他内容。大概是这样的:

(()=>{
const globalValue=‘其他东西’
foo()
})()
当然,上述方法不起作用,但我希望能够确保
foo
在这种情况下会记录“其他东西”,而不是原始的“东西”

是否有一些JavaScript魔术我可以用来做到这一点


编辑:这也是一个有助于找到答案的精心设计的最小案例。在我的实际案例中,
globalValue
window
,并且针对我非常奇怪的用例指向错误的
window
引用。

也许这有帮助,您可以将变量的值作为参数传递

让globalValue='something';
常数f1=(g=全局值)=>{
控制台日志(g)
}
常数f2=()=>{
全局值=‘其他事物’;
f1(全局值);
}
f1();

f2()我想不出任何方法来做这件事。你为什么要这样做?对于主要问题可能有不同的解决方案。外部库在其代码中引用了
window
。我有一个奇怪的用例,需要将代码注入同一域上的iframe中。
窗口
引用仍然是父级的
窗口
引用,而不是框架,这不幸地破坏了一切。JavaScript没有任何类型的变量动态范围。