2

1 - 为什么当我运行下面的代码时,我得到了undefind而不是"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();
4

7 回答 7

6

a = f1();

您正在分配调用f1到的结果a。然而,f1不返回任何东西,它评估为undefined. 你需要使用一个return语句:

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

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

于 2012-09-17T15:34:48.620 回答
1

您可能忘记了返回语句来获取您的值

function f1(){a=1; return f2();}
function f2(){return a;}
var a= 5;
a = f1();
​alert(a);​
于 2012-09-17T15:34:52.893 回答
1

f1不返回任何东西,这就是为什么尝试以下

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

即使没有多大意义

于 2012-09-17T15:34:53.933 回答
0

您需要显式地从f1.

于 2012-09-17T15:35:11.190 回答
0

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

于 2012-09-17T15:35:11.653 回答
0

在行期间 a = f1(); f1 函数没有返回任何内容,因此 a 被设置为未定义。

我不肯定您要做什么;如果你添加更多,我可以就如何让它做你想做的事情提出建议。

于 2012-09-17T15:35:14.617 回答
0

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

于 2012-09-17T15:36:25.500 回答