(k ゚∀゚)<函式是將一段程式碼獨立成一個個體,當我們需要時就可以呼叫它,函式有很多好處,其中一個就是函式可以重複呼叫,特別是一些經常重複的程式碼,我們只要寫一次就重複多次使用。
你說了那麼多,但我還是不太了解什麼是函式>( ゚ω゚ s)
(k ゚∀゚)<其實我們早就已經看過函式這種玩意,記不記得我們經常使用的System.inform(),實際上它算是函式,它可能花了一大段程式碼才執行到這效果,不過由於它被寫成了函式,我們只需要寫下短短的一行來呼叫它,取代這一大段的程式碼,同時我們就算不知道這函式是如何辦到這效果,我們亦可以毫無影響地使用它,這就是函式的好處。
(k ゚∀゚)<當然除了使用別人寫出來的函式,我們也要懂得如何撰寫函式,宣告函式的方式就像以下的模樣。
function 函式名稱(參數1,參數2,參數3,....){ //函式主體 return 回傳值; }
看起來十分複雜……>( ゚ω゚ s)
(k ゚∀゚)<那麼看看以下的簡單範例。
function sum(x,y){ return x+y; }
(k ゚∀゚)<在上述的範例裡,我們宣告了一個叫sum的函式,它的目的只是簡單地把兩個數值相加,函式名稱的命名規則基本上跟變數的命名一樣,而這函式有兩個參數叫x和y,參數其實是區域變數(local variable),是一個只有函式才能「看得到」的變數,函式以外的地方是無法使用的,而當我們呼叫函式時必須給予參數一個值。
那麼sum(x,y)下面的東西是什麼?>( ゚ω゚ s)
(k ゚∀゚)<這是函式主體,也就是定義函式要做什麼的地方。
這句return是什麼來的,我從未看過這玩意。>( ゚ω゚ s)
(k ゚∀゚)<這句return是定義這函式會傳回來的值,我們稱之為回傳值(return value),函式會把這個值傳回來,return x+y即是將x+y的值回傳,留意一個函式可以接受多個參數,不過函式只會回傳一個回傳值。
我們宣告了這個叫sum的函式,但我怎樣才可使用它?>( ゚ω゚ s)
(k ゚∀゚)<嗯,就像以下的模樣。
var result=sum(2,3);
System.inform("2+3="+result);
function sum(x,y){
return x+y;
}
(k ゚∀゚)<由於sum()有兩個參數,當我們呼叫sum()時,必須指定兩個值給這兩個參數,在上述的範例裡,我們將2和3傳給sum(),而這兩個值將x和y這兩個變數初始化,最後sum()將會回傳5這個值。
咦?為什麼函式在宣告前已經可以呼叫?平時如果變數在宣告前使用的話,不是會發生錯誤嗎?>( ゚ω゚ s)
(k ゚∀゚)<沒問題,當我們呼叫函式,吉里吉里會自行尋找宣告的位置,即使函式在宣告前被呼叫,也不會發生錯誤。
(k ゚∀゚)<而一個函式不一定有參數或回傳值,看看以下的範例。
function printHelloWorld(){ System.inform("Hello World"); }
(k ゚∀゚)<當不需要用到參數或回傳值,我們可以忽略它們。
好像有點懂但又不太懂,好混亂……>( ゚ω゚ s)
(k ゚∀゚)<那麼不如你自己嘗試寫一寫,假如我製作一個函式,它接受一個參數n,我希望它回傳1+2+3+...+n的值,那我該怎樣寫?
唔……是不是這樣?>( ゚ω゚ s)
function sum(n){ var result=0; for(var i=1;i<=n;i++){ result+=i; } return result; }
(k ゚∀゚)<是的,而當我們呼叫它時該怎樣寫?
是不是這樣?>( ゚ω゚ s)
System.inform(sum(10)); function sum(n){ var result=0; for(var i=1;i<=n;i++){ result+=i; } return result; }
(k ゚∀゚)<不錯,就是這樣了。
我已經好混亂,可不可以不要再說。>( ゚ω゚ s)
(k ゚∀゚)<嗯,今次教的題目的確有點難,那關於函式的東西下次再繼續吧。
沒有留言:
發佈留言