【发布时间】:2019-12-20 18:22:01
【问题描述】:
我是编码新手,无法弄清楚以下代码。如果有人能帮我一把,我将深深感激!
function a() {
function b() {
console.log(x);
}
var x = 2;
b();
}
var x = 1;
a();
当我运行这段代码时,控制台是2 非常有意义。超级棒!
但是当我运行这段代码时:
function a() {
b();
function b() {
console.log(x);
}
var x = 2;
}
var x = 1;
a();
当这段代码运行时,我原以为控制台的答案也是2!但我得到undefined 作为答案。至少我会认为1 可能是答案,以防它不是 2,但永远不会:undefined。
有人可以帮帮我吗?
非常感谢!
【问题讨论】:
-
语句按顺序执行。您在初始化变量之前调用了
b()。 -
你没有得到
1,因为该变量在不同的范围内。 -
我知道这个问题有重复,只是现在找不到。
-
变量提升是函数局部变量的原因,即使声明是在调用之后。
-
代码从上到下运行...当然
x如果在分配任何内容之前对其进行引用,它将是未定义的。
标签: javascript console undefined