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數組元素,而不是一個指針副本。

這有兩個問題。

  1. 當我們試圖給一個數組元素賦值的時候,它並沒有反映到原始數據上。 此代碼將值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

  2. 我們不知道for each元素中的數組元素的索引,我們也不能保證元素的順序(儘管它看上去是按順序的)。







vbscript