Ron*_*nie 37 arrays vbscript asp-classic
在下面的代码中
For i = LBound(arr) To UBound(arr)
Run Code Online (Sandbox Code Playgroud)
要求使用有LBound什么意义?当然,这总是0.
Chr*_*mer 51
为什么不用For Each?你并不需要通过这种方式去关心什么LBound和UBound是.
Dim x, y, z
x = Array(1, 2, 3)
For Each y In x
z = DoSomethingWith(y)
Next
Run Code Online (Sandbox Code Playgroud)
xpd*_*pda 17
有一个很好的理由不使用For i = LBound(arr) To UBound(arr)
dim arr(10) 分配数组的11个成员,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我们不知道a中数组元素的索引for each,我们不保证元素序列(尽管它看起来是有序的.)