arrays - length - vbscript for loop
在Classic Asp VBScript中迭代數組的最佳方式是什麼? (4)
可能它來自VB6。 因為在VB6中使用Option Base語句,可以像這樣改變數組的下界:
Option Base 1
同樣在VB6中,你可以像這樣改變特定數組的下界:
Dim myArray(4 To 42) As String
在下面的代碼中
For i = LBound(arr) To UBound(arr)
要求使用LBound
什麼意義? 當然,這總是0。
我一直使用For Each ...
LBound
不一定是0。
雖然不可能創建一個VBScript中除0下界以外的數組,但是仍然可以從COM組件中檢索一個可能指定了不同LBound
的變體數組。
這就是說我從來沒有遇到過這樣的事情。
有一個很好的理由不使用For i = LBound(arr) To UBound(arr)
dim arr(10)
分配數組的十一個成員,從0到10(假設VB6默認的Option Base)。
許多VB6程序員假定該數組是基於一個的,並且從不使用分配的arr(0)
。 我們可以通過使用For i = 1 To UBound(arr)
或For i = 0 To UBound(arr)
來消除潛在的錯誤來源,因為那麼arr(0)
是否被使用是清楚的。
For each
數組元素,而不是一個指針副本。
這有兩個問題。
當我們試圖給一個數組元素賦值的時候,它並沒有反映到原始數據上。 此代碼將值47分配給變量
i
,但不影響arr
的元素。arr = Array(3,4,8) for each i in arr i = 47 next i Response.Write arr(0) '- returns 3, not 47
我們不知道
for each
元素中的數組元素的索引,我們也不能保證元素的順序(儘管它看上去是按順序的)。