1 - 1 миллисекунда. Это также может быть цикл for. 1 секунда - 1000. Недавно я написал что-то похожее, проверяя ход процесса на внутреннем сервере и установив задержку 500. Старые браузеры не увидели бы реальной разницы между 1 и 15 мс, если я правильно помню. Я думаю, что V8 может на самом деле обрабатывать быстрее, чем это.
Я не думаю, что сборка мусора будет происходить с любой из функций до тех пор, пока не будет завершена последняя итерация, но эти новые поколения JS JIT-компиляторов намного умнее, чем те, о которых я знаю больше, так что возможно, они увидят что после истечения времени ожидания ничего не происходит и извлекает эти параметры из памяти.
Несмотря на это, даже если память зарезервирована для каждого экземпляра этих параметров, потребуется более 8000 итераций, чтобы вызвать проблему.
Одним из способов защиты от потенциальных проблем с более интенсивными параметрами памяти является передача объекта с нужными параметрами. Тогда я верю, что params будет просто ссылкой на заданное место в памяти.
Так что-то вроде:
var recurseParams ={ steps:8000, data:"abc", delay:100 } //outside of the function
//define the function
recurse(recurseParams);
//Then inside the function reference like this:
recurseParams.steps--