for in的key只能是string

用AS3开发时,new键值对,键为int类型,但是这里的键其实是string,编译成JS语言后,JS是弱类型语言。这种写法在部分移动设备上可能会导致游戏卡死(崩掉)。

 

//错误用法
var map:Object = {};
map[1] = "one";
map[2] = "two";
map[3] = "three";
for(var key int in map){
    console.log(map[key]);
}

//正确示例,把string类型的key转成int
map[1] = "one";
map[2] = "two";
map[3] = "three";
for(var key String in map){
    console.log(map[parseInt(key)]);
}

JS是弱类型语言,在AS3设置的变量类型在JS中其实是假的变量类型,JS不知道变量的类型,如果运行代码的设备没有处理(大部分设备都有做这个处理,但是也有设备没有做这个转化)string转int,在layaNative上跑就会崩。

所以,开发中,要避免这种错误写法。

key要用string类型,如果需要int,可以自行再转化为int

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章