VBS教程:VBscript語句-Function 語句
Function 語句
聲明 Function 過程的名稱、參數(shù)以及構(gòu)成其主體的代碼。
[Public [Default]| Private] Function name [(
arglist
)]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End Function
參數(shù)
Public
表示 Function 過程可被所有腳本中的所有其他過程訪問。
Default
只與 Class 塊中的 Public 關(guān)鍵字一起使用 來表示 Function 過程是類的默認(rèn)方法。如果在一個類中指定了不止一個 Default 過程,就有錯誤發(fā)生。
Private
表示 Function 過程只可被聲明它的腳本中的其他過程訪問或者如果函數(shù)是一個數(shù)據(jù)類,那么 Function 過程只能被該類中的其他過程訪問。
name
Function 的名稱,遵循標(biāo)準(zhǔn)的變量命名約定。
arglist
代表調(diào)用時要傳遞給 Function 過程的參數(shù)的變量列表。用逗號隔開多個變量。
statements
在 Function 過程的主體中執(zhí)行的任意語句組。
expression
Function 的返回值。
arglist 參數(shù)包含下列語法和部分:
[ByVal | ByRef] varname[( )]
參數(shù)
ByVal
表示該參數(shù)是按值方式傳遞的。
ByRef
表示該參數(shù)按引用方式傳遞。
varname
代表參數(shù)變量的名稱;遵循標(biāo)準(zhǔn)的變量命名約定。
說明
如沒有顯式指定使用 Public或 Private,則 Function 過程默認(rèn)為公用,即它們對于腳本中的所有其他過程是可見的。Function 中局部變量的值在對 過程的調(diào)用中不被保留。
不能在任何其他過程(例如,Sub 或 Property Get)中定義 Function 過程。
使用 Exit Function 語句可以從 Function 過程中立即退出。程序繼續(xù)執(zhí)行調(diào)用 Function 過程的語句之后的語句。可在 Function 過程的任何位置出現(xiàn)任意個 Exit Function 語句。
與 Sub 過程類似,Function 過程是可以獲取參數(shù)、執(zhí)行一系列語句并改變其參數(shù)值的獨立過程。與 Sub 過程的不同之處是:當(dāng)要使用由函數(shù)返回的值時,可以在 表達(dá)式的右邊使用 Function 過程,這與內(nèi)部函數(shù)的使用方式一樣,例如 Sqr、Cos 或 Chr。
在表達(dá)式中,可以通過使用函數(shù)名,并在其后用圓括號給出相應(yīng)的參數(shù)列表來調(diào)用 Function 過程。有關(guān)調(diào)用 Function 過程的詳細(xì)信息,請參閱 Call 語句。
小心 Function 過程可以是遞歸的,即該過程可以調(diào)用自身以完成某個給定的任務(wù)。但是,遞歸可能會導(dǎo)致堆棧溢出。
要從函數(shù)返回一個值,只需將值賦給函數(shù)名。在過程的任意位置都可以出現(xiàn)任意個這樣的賦值。如果沒有給 name 賦值, 則過程將返回一個默認(rèn)值:數(shù)值函數(shù)返回 0,字符串函數(shù)返回零長度字符串 ("")。如果在 Function 中沒有對象引用被指定給 name(使用 Set),則返回對象引用的函數(shù)將返回 Nothing。
下面的樣例說明如何給一個名為 BinarySearch 的函數(shù)賦返回值。在此樣例中,將 False 賦給了該函數(shù)名,表示沒有找到某個值。
Function BinarySearch(. . .) . . . '
未找到該值。返回False
值。If lower > upper Then
BinarySearch = False
Exit Function
End If
. . .
End Function
在 Function 過程中使用的變量分為兩類:一類是在過程內(nèi)顯式聲明的,另一類則不是。在過程內(nèi)顯式聲明的變量(使用 Dim 或等效方法)總是過程的局部變量。被使用但沒有在過程中顯式聲明的變量也是局部變量,除非在該過程外更高級別的位置顯式聲明它們。
小心 Function 過程可以是遞歸的,即該過程可以調(diào)用自身以完成某個給定的任務(wù)。但是,遞歸可能會導(dǎo)致堆棧溢出。
小心 VBScript 可能會重新排列數(shù)學(xué)表達(dá)式以提高內(nèi)部效率。當(dāng) Function 過程修改數(shù)學(xué)表達(dá)式中變量的值時,應(yīng)避免在同一表達(dá)式中使用該函數(shù)。