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