JavaScript:在嵌套函数中访问中间/外部函数的变量/属性

JavaScript:在嵌套函数中访问中间/外部函数的变量/属性,javascript,Javascript,我正在学习Javascript,有一个问题。下面是一些示例代码: var xq=false; var fooyy=函数ttt(){ var xq=假; baryy=函数(){ var xq=真; console.log(xq); 控制台日志(ttt); console.log(fooyy); console.log(ttt.xq); console.log(fooyy.xq); console.log(window.xq); }(); }; fooyy(); console.log(xq);

我正在学习Javascript,有一个问题。下面是一些示例代码:

var xq=false;
var fooyy=函数ttt(){
var xq=假;
baryy=函数(){
var xq=真;
console.log(xq);
控制台日志(ttt);
console.log(fooyy);
console.log(ttt.xq);
console.log(fooyy.xq);
console.log(window.xq);
}();
};
fooyy();
console.log(xq);
console.log(fooyy.xq)这里有一个很好的解释

另外,请看一看,人们投入了大量精力来解释什么是结束

简而言之,baryy函数可以访问外部变量

这是否意味着从内部嵌套函数无法访问外部函数的属性和变量

不,这些不是属性,它们是变量。您试图将它们作为不存在的函数的属性来访问

我看到局部变量和全局变量都是可访问的。外部函数的变量如何(在名称相同或其他情况下)

只要它们有不同的名称,就可以访问它们。这被称为,并且即使在外部函数返回后仍然有效-内部函数将形成一个新函数。您可以通过它们的名称访问它们,它们是局部变量

但是,如果您的局部作用域中确实有一个同名变量,如您的示例中的变量
xq
,则该局部变量将从外部作用域对该变量进行阴影处理,使其无法访问。如果要访问它,需要重命名任一变量。

请参阅