我不明白范围

yos*_*ssi 2 javascript

1 - 为什么当我运行下面的代码时,我得到了unfind而不是"a = 1"?

function f1(){a=1; f2();}
function f2(){return a;}
var a= 5;
a = f1();
?alert(a);?
Run Code Online (Sandbox Code Playgroud)

像这个例子,resualt是"a = 1".

function f1(){a=1; f2();}
function f2(){alert(a);}
var a= 5;
f1();
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 6

同

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

要指定调用的结果f1来a.然而,f1它没有返回任何东西,它评估为undefined.你需要使用一个return声明:

function f1(){a=1; return f2(); }
Run Code Online (Sandbox Code Playgroud)

顺便说一下,这不是范围问题.您没有任何本地函数的变量,一切都访问相同的变量a.