首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> ASP 程式設計 >> ASP 入門教學

ASP 入門教學:VBScript 變數、陣列與資料類型核心觀念

     編輯:ASP 入門教學

VBScript 僅支援單一資料類型 —— Variant (變體),但 Variant 內部可依據內容自動切換多種子類型,彈性極高。理解 Variant 運作機制、變數宣告規則與陣列操作,是撰寫健壯 ASP 程式的基石。

Variant 子類型完整表

子類型說明範圍/範例
Boolean布林值True / False
Byte無號位元組0 ~ 255
Currency貨幣型(定點 4 位小數)-922,337,203,685,477.5808 ~ 922,337,203,685,477.5807
Date日期時間西元 100/1/1 ~ 9999/12/31
Double雙精度浮點數±4.94E-324 ~ ±1.79E308
Empty未初始化變數宣告未賦值
Error錯誤代碼Err.Number 等
Integer16 位整數-32,768 ~ 32,767
Long32 位整數-2,147,483,648 ~ 2,147,483,647
Null無效值資料庫 NULL、明確指派 Null
Object物件參考CreateObject 回傳
Single單精度浮點數±1.40E-45 ~ ±3.40E38
String可變長字串最長約 20 億字元

自動轉型規則:數字語境視為數字、字串語境視為字串;引號括起的數字視為字串("123")。

變數命名規則

  • 首字必為字母 (A-Z, a-z)。
  • 不可含句點 (.)。
  • 長度 ≤ 255 字元。
  • 在相同作用域內唯一。
  • 不可與 VBScript 關鍵字衝突(If, Then, Else, Dim, Function 等)。
  • 建議採用駝峰式或底線分隔:userName、user_name。

變數宣告語句

Dim a, b, c          ' 多變數以逗號分隔
Dim arr(5)           ' 靜態陣列:6 個元素 (0~5)
Dim matrix(3, 4)     ' 二維陣列:4 行 x 5 欄

Option Explicit:強制宣告,杜絕拼字錯誤

<% Option Explicit %>
' 必須置於檔案最頂端(@ Language 之後、任何 HTML/腳本之前)
' 啟用後,所有變數必須先 Dim/Private/Public 宣告才能使用
' 強烈建議所有正式專案啟用

變數作用域與生命週期

關鍵字作用域適用層級備註
Dim程序級/腳本級區域/全域最常用;腳本級可跨程序存取
Public全域 (腳本級)腳本級所有程序可見;.asp 檔案層級相當於 Dim
Private模組/類別內部腳本級僅宣告所在腳本可見;Class 成員常用

不同程序可使用同名區域變數,互不干擾。

陣列進階操作

動態陣列

Dim dynArr()         ' 宣告時不指定大小
ReDim dynArr(10)     ' 設定為 11 個元素
ReDim Preserve dynArr(20)  ' 擴充至 21 個,保留原資料
  • ReDim 不加 Preserve 會清空陣列內容。
  • 維度上限 60 維,但實務極少超過 2~3 維。

實用陣列函式

層級宣告位置可見範圍生命週期
程序級Function/Sub 內部僅該程序程序執行期間
腳本級所有程序外部整個 .asp 檔案所有程序頁面請求處理期間
函式用途範例
UBound(arr, 維度)取得指定維度上界索引UBound(arr, 1)
LBound(arr, 維度)取得下界 (永遠為 0)LBound(arr)
IsArray(var)判斷是否為陣列If IsArray(x) Then...
Erase arr釋放動態陣列記憶體 / 清空靜態陣列元素Erase dynArr
Join(arr, 分隔字串)一維陣列轉字串str = Join(arr, ",")
Split(字串, 分隔字串)字串拆分為一維陣列arr = Split("a,b,c", ",")
Filter(arr, 關鍵字, [Include], [Compare])篩選含/不含關鍵字的元素Filter(arr, "err", True)

完整範例:星期陣列與問候語

<html>
<head><title>陣列應用</title>
<script language="VBScript" for="button1" event="onClick">
Dim myWeekDay(6), myWeek
myWeekDay(0) = "星期日" : myWeekDay(1) = "星期一" : myWeekDay(2) = "星期二"
myWeekDay(3) = "星期三" : myWeekDay(4) = "星期四" : myWeekDay(5) = "星期五"
myWeekDay(6) = "星期六"
myWeek = WeekDay(Date) - 1
Select Case True
    Case myWeek = 1 : MsgBox "今天是" & myWeekDay(1) & ",一週的開始,努力工作喲。"
    Case myWeek = 2 : MsgBox "今天是" & myWeekDay(2) & ",還要努力工作喲。"
    Case myWeek = 3 : MsgBox "今天是" & myWeekDay(3) & ",繼續努力工作喲。"
    Case myWeek = 4 : MsgBox "今天是" & myWeekDay(4) & ",還有兩天就到週末了,堅持。"
    Case myWeek = 5 : MsgBox "今天是" & myWeekDay(5) & ",哈哈,明天是週末。"
    Case myWeek = 6 : MsgBox "今天是" & myWeekDay(6) & ",今天可以盡情玩了。"
    Case myWeek = 0 : MsgBox "今天是" & myWeekDay(0) & ",好好休息,明天又是新的一週。"
End Select
</script>
</head>
<body>
<form name="form1">
<input type="button" name="button1" value="請查看今天是週幾">
</form>
</body>
</html>

常見錯誤與除錯提示

  • 未宣告直接賦值:若未啟用 Option Explicit,會隱性建立全域變數,易造成拼字 Bug(如 userName vs userNmae)。
  • 陣列索引越界:存取 arr(UBound(arr)+1) 會拋「Subscript out of range」,循環請用 For i = 0 To UBound(arr)。
  • 動態陣列未 ReDim 直接使用:會拋「Array variable has incorrect number of subscripts」。
  • ByRef/ByVal 陣列傳遞:VBScript 陣列永遠傳址,函式內修改會影響原陣列;需自行 ReDim Preserve 複製才能隔離。

紮實掌握 Variant 特性、變數作用域與陣列操作,能讓您寫出更安全、高效、易維護的 VBScript 代碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved