本帖最后由 skyfree 于 2011-12-7 11:12 编辑
_Main()
Exit
Func _Main()
Local $i
For $i = 1 To 2
Local $s_Test
MsgBox(0, $i & "-1", $s_Test)
$s_Test = "Test"
MsgBox(0, $i & "-2", $s_Test)
Next
EndFunc ;==>_Main
写了段简单的代码用以说明问题,上述代码没有实际功能,简单解释一下:
1、使用For循环循环两次
2、循环中,每次都定义变量“$s_Test”
3、定义完变量后,显示变量的初值,对AU3来说变量不定义初值时值应为空
4、而后将$s_Test赋值为“Test”
5、再次展示$s_Test的值,此时值即为“Test”
但发现了如下问题:
1、循环体被执行了两次,两次中每次都有定义变量$s_Test
2、理论上说,第一次定义的$s_Test与第二次定义的$s_Test应该只是名称相同,但不是同一个变量,具体说,应不是同一个内存数据块
3、理论上说,两次循环中所展示出的$s_Test值应是相同的,应是先为空,后为“Test”
4、但问题出现了:
(1)第一次循环中,$s_Test的值先为空,
后为“Test”
这个没错
(2)但在第二次循环中,$s_Test的值竟然先为“Test”?!
后还是“Test”
第二次循环中,$s_Test的值应与第一次循环时相同,还是先为空,后为“Test”才对吧?? |