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

  • 本站文章除注明转载外,均为本站原创或者翻译。
  • 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商;
  • 本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载;
  • 本博客采用 WPCMD 维护;
  • 本文标题:for…in循环的步进值类型是String
  • 本文链接:http://zengrong.net/post/70.htm

有下面一段代码:

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

执行会返回下面的错误:

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

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

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

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