2012-09-17 65 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一樣。