Javascript 有没有办法获得具有相同名称的外部作用域变量?
如果我在外部闭包中定义了某个变量,而在内部闭包中定义了另一个同名变量。我能得到外部变量吗 我知道它仍然在内存中的某个地方,并且没有被覆盖,因为它可以在函数完成后打印出来。有没有办法访问它Javascript 有没有办法获得具有相同名称的外部作用域变量?,javascript,scope,Javascript,Scope,如果我在外部闭包中定义了某个变量,而在内部闭包中定义了另一个同名变量。我能得到外部变量吗 我知道它仍然在内存中的某个地方,并且没有被覆盖,因为它可以在函数完成后打印出来。有没有办法访问它 constfoo='outer'; 功能条(){ const foo='内部'; //有没有办法从这里到外面的餐厅? console.log(foo);/“内部”,但我希望它是“外部” } bar(); console.log(foo);//“outer”如果foo位于顶层,并使用const声明,则是使用新函
constfoo='outer';
功能条(){
const foo='内部';
//有没有办法从这里到外面的餐厅?
console.log(foo);/“内部”,但我希望它是“外部”
}
bar();
console.log(foo);//“outer”
如果foo
位于顶层,并使用const
声明,则是使用新函数访问它的唯一方法之一,该函数运行时的作用域位于顶层。(请不要这样做):
constfoo='outer';
功能条(){
const foo='内部';
const fn=新函数('return foo');
console.log(fn('foo'));
}
bar();
console.log(foo);//“外部”
我想我应该添加这个答案,因为它在某些情况下可能会有所帮助
constfoo='outer';
功能条(){
//虽然很难看,但它很管用
{
const foo='内部';
//代码的其余部分
}
console.log(foo);/“外部”
}
bar();
console.log(foo);//“外部”
哇,这真是令人兴奋。我不知道可以强制从全局范围运行表达式。经过一些研究。似乎(0,eval)('foo')
也能做到这一点,但是eval('foo')
由于某些原因不能做到。