【发布时间】:2023-04-07 10:57:01
【问题描述】:
在下面的示例中,我尝试访问位于函数外部的x。
我希望得到 20 作为输出,但输出是 undefined。
谁能解释为什么会这样,有没有办法访问外部 x?
var x = 10;
function outer() {
var x = 20;
function inner() {
var x = 30;
function printX() {
console.log(outer.x);
}
printX();
}
inner();
}
outer();
【问题讨论】:
-
使用三个不同的变量名而不是 x 三次,它将是可访问的。但是,如果您使用相同的名称,那么您会阻止自己访问除最近的名称之外的任何内容。
-
你是不是想说在上面的例子中,不能在内部函数中访问外部x?
-
正确。您编写代码的方式使内部函数无法访问外部变量。
-
@Makedonmakedonski 如果你想要一个正式的术语,它叫做variable shadowing
-
这根本不是变量的工作方式。
标签: javascript scope