Следующий код выполняет молчащую логическую ошибку:
const arr = [];
class Point{
constructor(){
this.x = Math.random() * 1000000;
this.y = Math.random() * 1000000;
}
}
console.time('foo');
let avg = 0;
for(let i = 0; i < 114000000; i++ ){
arr.push(new Point());
avg += arr[i].x / 1000;
}
console.log(avg, arr.length);
// shouldn't this double the avg ?
for(let i = 0; i < 114000000; i++ ){
avg += arr[i].x / 1000;
}
console.log(avg, arr.length);
console.timeEnd('foo');
CodePen - http://codepen.io/darkyen/pen/yOPMZg?editors=0010
Возможное поведение (ы):
-
Переменная
avg
после второго цикла цикла должна быть удвоена, а длина массива должна быть 114 миллионов. -
Я должен получить ошибку памяти.
Вывод при запуске как script:
-
avg
Не меняется после второго цикла цикла. - Длина массива не 114 Mil, (Chrome 2-3M, Firefox Dev 5 Mil, MS Edge 788k).