Microsoft® Visual Basic® Scripting Edition
Function 陳述式
 程式語言參考 
  | Version 1 

請參閱


說明
宣告 Function 程序的名稱、引數及程式碼。
語法
[Public | Private] Function name [(arglist)]
    [statements]
    [name = expression]
    [Exit Function]
    [statements]
    [name = expression]
End Function

Function 陳述式的語法具有以下幾個部分:

組成部分 說明
Public 表示任何模組中的所有其它程序都可呼叫這個 Function 程序。
Private 表示這個 Function 程序只能被在宣告它之模組堛熊{序所使用。
name Function 的名稱,遵循標準變數命名規格。
arglist 變數清單,表示呼叫 Function 程序時所傳送的引數。變數以逗號隔開。
statements Function 程序所執行一群的陳述式。
expression Function 的傳回值。

arglist 引數有下列語法和部分:

[ByVal | ByRef] varname[( )]

組成部分 說明
ByVal 表示以傳值的方式傳遞引數。
ByRef 表示以傳址的方式傳遞引數。
varname 代表引數的變數名稱,遵循標準變數命名規格。

註解
Function 程序若無明確地指定為 PublicPrivate,則預設為 Public。這表示這些 Function 可被您程式碼中其他的程序所使用。但在程序間呼叫 Function,其中的區域變數值將不被保留。

所有的可執行程式碼都必須在程序中,且不可以在 FunctionSub 程序堜w義其它的Function 程序。

Exit Function 陳述式會使 Function 程序立即停止,程式會從呼叫該 Function 程序的下一行陳述式繼續執行。Exit Function 陳述式可在 Function 程序任何位置出現,且不限次數。

如同 Sub 程序,Function 程序是可接受引數、執行一串陳述式並且改變其引數值的獨立程序。然而,與 Sub 程序不同的是,當您想運用 Function 的傳回值時,Function 程序可以放在運算式的右方,就如同使用內建函數一樣,例如 SqrCos、或 Chr

運算式中只要使用函數名稱,接著以括號括起來的引數列,就可以呼叫 Function 程序。請參考 Call 陳述式以得知關於如何呼叫 Function 程序的特定資訊。

注意  Function 程序可遞迴,也就是它們可以呼叫自己。然而,遞迴可能會造成堆疊溢位。

若要從函數中傳回值,須指定該值給函數名稱。這種指定式可出現於程序中的任何位置,且不限次數。如果沒有指定值給 name,則程序會傳回預設值:數值函數傳回 0,字串函數傳回零長度字串("")。若傳回型態為物件所引用,且 Function 堥S有指定物件引用給 name(使用 Set),則函數會傳回 Nothing

下列範例表示如何指定傳回值給一個名稱叫作 BinarySearch 的函數。在此範例中,指定 False 給名稱以表示有些值找不到。


Function BinarySearch(. . .)
    . . .
    ' 找不到此值,傳回 False 值。
    If lower > upper Then
        BinarySearch = False  
        Exit Function 
    End If
    . . .
End Function
Function 程序中使用的變數有兩類:那些在程序中明確宣告的,以及不是此類的。在程序中明確地宣告的變數(使用 Dim 或同類字),必為區域變數。程序中有使用到,但未在程序中宣告的變數也是區域的,除非此變數已在程序外更高層次中被宣告。

注意  程序可使用不是在該程序中宣告過的變數,但是若在 Script 層次定義相同的名稱,就會發生名稱上的衝突。如果程序堣犍峇F未宣告的變數,而此變數的名稱和其它程序、常數、或變數的名稱相同,則會認定程序是引用 Script 層次的名稱。所以,請明確地宣告變數以避免此種衝突。可使用 Option Explicit 陳述式來強迫變數的宣告。


注意  VBScript 可能為了內部的效率而重新排列算術運算式。若 Function 程序會改變同一運算式中的變數值,請避免在此狀況下使用。