For of会导致的Symbol未定义问题: Cocos Creator里面似乎要慎用ES6语法

开发中使用了for of循环,大家知道这个对于数组很方便. 旧的数组循环方式一般是
for(var i = 0; i < array.length; i++){
var item = array[i]
}

ES6 的for of循环简化为:
for(var item of array){
}
瞬间感觉会很爽. 然而使用浏览器调试没有问题, 到了使用模拟器调试的时候, 调用到这儿会显示Symbol未定义, 像这样的:
Simulator: 1099:ReferenceError: Symbol is not defined
at a (C:\r\cocosproj\s24svn\library\bundle.project.js?009:NaN:0)

通过VSCode调试, 发现for of会被转化为旧的循环模式, 循环中出现了Symbol.iterator这样的东东. Symbol貌似也是es6新加的类型? 我记得creator用的是babel做解释器, 估计是babel将for of解释为这样的… 可是, jsb模拟器的js解释引擎到底有多旧, babel解释后的都不能执行吗?

求解决, 也提醒各位亲注意一下, 目前的方案是换回经典for循环.

PS: creator版本为1.3.2

for 循环的各种变体虽然写起代码来爽,但是绝大多数浏览器对它们的优化都远远不如最经典的 for 循环,比如 for in 中的很多写法可能导致你整个函数体无法被 jit,得不偿失啊。

可以看一下这几篇

https://github.com/petkaantonov/bluebird/wiki/Optimization-killers
https://github.com/GoogleChrome/devtools-docs/issues/53
https://www.html5rocks.com/en/tutorials/speed/v8/

没错,我也遇到,原生平台上测试通不过,如果js是经过babel转译的,按理应该支持for of的啊 @panda

请参考官方文档,目前没有完整支持所有 ES6 的特性:“在这份列表中,标记为“Support via polyfill”的部分暂不支持”
http://www.cocos.com/docs/creator/scripting/reference/javascript-support.html

感谢大神回复!