& ldquo; RangeError: превышен максимальный размер стека вызовов & rdquo; Зачем?

Если я запускаю

Array.apply(null, new Array(1000000)).map(Math.random);

на Chrome 33, я получаю

RangeError: Maximum call stack size exceeded

Почему?

66
задан 14.05.2020, 16:26

1 ответ

Браузеры не могут справиться с таким количеством аргументов. См. Этот фрагмент, например:

alert.apply(window, new Array(1000000000));

. Это приводит к RangeError: Maximum call stack size exceeded, что аналогично вашей проблеме.

Чтобы решить эту проблему, сделайте:

var arr = [];
for(var i = 0; i < 1000000; i++){
    arr.push(Math.random());
}
73
ответ дан 14.05.2020, 16:28
  • 1
    .Where System.Linq, DataContext класс, где код добавляется (мой EF DbContext impl) – Cocowalla 16.03.2019, 16:26

Теги

Похожие вопросы