关于空数组foreach在Chrome里的那些事
作者: gunhawk时间: 2017-09-04javascript
最开始的写法
想法很native, 直接定义一个长度为N的数组遍历就好了
let arr = Array(N);
arr.foreach(elem => { // do something... });
运行程序, 发现并没有执行任何东西. 查看arr
, 的确是长度为N的数组, 这究竟是为什么?
原因探究
经过一番googling, 终于在这里找到了解决方案和原因. 我就简单总结一下
Chrome
对foreach
等方法的实现如下:
for (var i = 0; i < length; i++) {
if (i in array) {
var element = array[i];
f(element, i, array);
}
//...
}
内部有使用到枚举对象属性的方法, 然而上述的arr
是没有可枚举的属性的, 不妨可以试试
Object.keys(arr) // => []
更详细的内容请看derp的留言
于是有大神给出了解决方案
Array.apply(null, Array(N)).foreach(elem => { // do something... })
这样总算能用起来了, 看着也比较舒服, 嗯.....