有没有办法在Javascript中访问外部作用域中的局部作用域变量?

有没有办法在Javascript中访问外部作用域中的局部作用域变量?,javascript,Javascript,有没有办法不创建对象或不使用“this”就可以在外部作用域中访问局部作用域变量 说 有没有办法使变量“bar”在函数“foo”作用域之外可用?将值分配给窗口的属性对象: function foo(){ window.bar = 10; } console.log(window.bar); //10 编辑: 既然你不能接受他的回答,那么不——你所要求的是不可能的。唯一的解决方案是在全局范围内声明变量,然后稍后对其进行初始化。否。您不能这样做范围是范围。如果要访问外部,请将其声明为外部并

有没有办法不创建对象或不使用“this”就可以在外部作用域中访问局部作用域变量


有没有办法使变量“bar”在函数“foo”作用域之外可用?

将值分配给
窗口的属性
对象:

function foo(){
    window.bar = 10;
}

console.log(window.bar); //10
编辑:


既然你不能接受他的回答,那么不——你所要求的是不可能的。唯一的解决方案是在全局范围内声明变量,然后稍后对其进行初始化。

否。您不能这样做范围是范围。如果要访问外部,请将其声明为外部并使用它


事情就是这样设计的。我不建议用任何蹩脚的方法来实现这一点。

您不能访问函数外部的局部变量

下面的文章可能会帮助您更详细地理解作用域-


如果您不希望该变量位于该函数的局部,请在函数外部定义它……这对我来说没有多大意义。本地作用域被设计为本地的,为什么您希望它成为任何其他作用域的一部分?这是一个面试问题,在某些条件下,可以通过任何方式使它在外部作用域中可用。您可以使它在外部作用域中可用,但这样它就不再是本地的。在不更改“var bar=10”的情况下寻找任何答案。这是一个面试问题。那就不可能了……你必须把这个值赋给一个已经在全局范围内声明的变量……@Nimmy测试你的置信度:)你应该说不可能,先生;)@Suresh atta:)是的,但我只是想看看我是否正确,事实上,如果这是一个面试问题,那么@sᴜʀᴇsʜᴀᴛᴛᴀ'他们的答案正是他们想要的。这里重要的一个词是“范围”,而不是说这是不可能的。他们正在寻找能够理解原因并能解释的人。因此,blah blah与其他语言不同,JavaScript具有函数作用域而不是块作用域,并且局部变量在其函数之外不可用,尽管新版JS(ES2016或现在称之为什么)也具有块作用域等。
function foo(){
    window.bar = 10;
}

console.log(window.bar); //10