for...in循环的步进值类型是String

有下面一段代码:

1var arr:Array = [1,2,3,4];
2for(var i in arr){
3	trace(i);
4	_root.attachMovie("mc","mc"+i, i);
5}

执行会返回下面的错误:

错误 场景=场景 1, 图层=图层 1, 帧=1:第 4 行: 类型不匹配。 _root.attachMovie("mc","mc"+i, i); ActionScript 错误总数:1 报错:1

我开始百思不得其解,是什么类型不匹配?如果注释attachMovie一行,则不会出现错误。i值正常。 接着使用下面的代码测试:

1var arr:Array = [1,2,3,4];
2for(var i in arr){
3	trace(typeof i);
4	//_root.attachMovie("mc","mc"+i, i);
5}

发现i的数据类型居然是String!难怪flash会报错,因为attachMovie方法的第三个参数Depth数据类型必须是Number。