Function 語(yǔ)句聲明 Function 過(guò)程的名稱、參數(shù)以及構(gòu)成其主體的代碼。 [Public [Default]| Private] Function name [( arglist )] [statements] [name =expression] [Exit Function] [statements] [name =expression] End Function
參數(shù)Public 表示 Function 過(guò)程可被所有腳本中的所有其他過(guò)程訪問(wèn)。 Default 只與 Class 塊中的 Public 關(guān)鍵字一起使用 來(lái)表示 Function 過(guò)程是類的默認(rèn)方法。如果在一個(gè)類中指定了不止一個(gè) Default 過(guò)程,就有錯(cuò)誤發(fā)生。 Private 表示 Function 過(guò)程只可被聲明它的腳本中的其他過(guò)程訪問(wèn)或者如果函數(shù)是一個(gè)數(shù)據(jù)類,那么 Function 過(guò)程只能被該類中的其他過(guò)程訪問(wèn)。 name Function 的名稱,遵循標(biāo)準(zhǔn)的變量命名約定。 arglist 代表調(diào)用時(shí)要傳遞給 Function 過(guò)程的參數(shù)的變量列表。用逗號(hào)隔開多個(gè)變量。 statements 在 Function 過(guò)程的主體中執(zhí)行的任意語(yǔ)句組。 expression Function 的返回值。 arglist 參數(shù)包含下列語(yǔ)法和部分: [ByVal | ByRef] varname[( )] 參數(shù)ByVal 表示該參數(shù)是按值方式傳遞的。 ByRef 表示該參數(shù)按引用方式傳遞。 varname 代表參數(shù)變量的名稱;遵循標(biāo)準(zhǔn)的變量命名約定。 說(shuō)明如沒(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í)別的位置顯式聲明它們。 小心 Function 過(guò)程可以是遞歸的,即該過(guò)程可以調(diào)用自身以完成某個(gè)給定的任務(wù)。但是,遞歸可能會(huì)導(dǎo)致堆棧溢出。 小心 VBScript 可能會(huì)重新排列數(shù)學(xué)表達(dá)式以提高內(nèi)部效率。當(dāng) Function 過(guò)程修改數(shù)學(xué)表達(dá)式中變量的值時(shí),應(yīng)避免在同一表達(dá)式中使用該函數(shù)。 要求版本 1 請(qǐng)參閱Call 語(yǔ)句 | Dim 語(yǔ)句 | Exit 語(yǔ)句 | Nothing | Set 語(yǔ)句 | Sub 語(yǔ)句 返回首頁(yè) |