javascript函数中的词法范围

tld*_*ldr 0 javascript closures scope lexical-scope

以下片段:

a = 0;

function f1() {
    a = 1;
    f2();
}

function f2() {
    return a;
}

f1();
Run Code Online (Sandbox Code Playgroud)

返回undefined.

根据我的理解,函数在定义变量时可以访问变量,并在执行变量时访问这些变量的值.因此,在这种情况下,我会猜到f2可以访问全局变量'a',并读取它的修改值(1).那为什么它未定义?

Pla*_*ure 5

您没有f2()f1函数中f1返回调用或其他任何内容的结果,因此正确返回undefined.