问题:数组的相关 API 对空位的处理是不一致的。
案例:
typeof fn !== 'function');
if (isOtherType) {
throw new TypeError();
}
for (let i = 0,l = arr.length; i < l; i++) {
fn();
}
}
const foo = () => console.log('foo');
const bar = () => console.log('bar');
exec([foo,bar]);// Uncaught ReferenceError: fn is not defined</code></pre>
在 Array#some 对所有数组元素进行排查的过程中,空位被跳过;但在递增下标的时候就不会跳过空位了。
结论:拷贝和验证数组的时候需要警惕,最好同步完成。
fn);
}
const foo = () => console.log('foo');
const bar = () => console.log('bar');
exec([foo,bar]);</code></pre>