我不明白范围

时间:2012-09-17 15:32:05

标签: javascript

1 - 为什么当我运行以下代码时,我得到未定义而不是“a = 1”

function f1(){a=1; f2();}
function f2(){return a;}
var a= 5;
a = f1();
​alert(a);​

就像这个例子一样,结果是“a = 1”

function f1(){a=1; f2();}
function f2(){alert(a);}
var a= 5;
f1();

7 个答案:

答案 0 :(得分:6)

使用

a = f1();

您要将f1的调用结果分配给a。然而,f1没有返回任何内容,它评估为undefined。您需要使用return语句:

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

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

答案 1 :(得分:1)

你可能忘记了一个返回语句来获取你的值

function f1(){a=1; return f2();}
function f2(){return a;}
var a= 5;
a = f1();
​alert(a);​

答案 2 :(得分:1)

f1不会返回任何原因 试试下面的

function f1(){a=1; return f2();}
function f2(){return a;}
var a= 5;
a = f1();
​alert(a);​

即使没有多大意义

答案 3 :(得分:0)

您需要从f1明确返回。

答案 4 :(得分:0)

第一个例子中的函数f1没有返回任何值,所以这就是原因

答案 5 :(得分:0)

在行a = f1()期间; f1函数没有返回任何内容,所以a被设置为undefined。

我不肯定你要做什么;如果你添加更多我可以提出如何使它做你想做的建议。

答案 6 :(得分:0)

f1()不会返回任何值。不返回任何内容与返回undefined相同。