2012-09-17 29 views
2

1 - 为什么当我运行下面的代码时,我得到了undefind而不是“a = 1”我不明白范围

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

像本实施例中的resualt是“A = 1”

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

回答

6

随着

a = f1(); 

要指定调用f1a的结果。但是,f1不返回任何内容,它的计算结果为undefined。你需要使用一个return声明:

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

顺便说一句,这不是一个范围问题。你没有任何变量对你的函数是局部的,所有东西都访问相同的a

+0

做得好谢谢 – yossi

1

你可能忘记了一个return语句,让您的值

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

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

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

即使没有使大量的感

0

您需要明确从f1返回。在第一示例

0

函数f1我以前不返回任何值,所以这是原因

0

在线路= F1(); f1函数没有返回任何东西,因此a被设置为undefined。

我不是积极的,你正在尝试做什么;如果你添加更多,我可以提出一个建议,让它做你想做的事。

0

f1()不返回任何值。什么都不返回,就像返回undefined一样。