389просмотров
2 февраля 2026 г.
Score: 428
#typescript TIL: Сlosure capturing в JS работает иначе чем в dotnet, здесь runtime может захватывать ВЕСЬ контекст функции, т.е. может захватить весь scope[variable] вместо просто variable, поэтому всякие setTimeout с лямбдами могут приводить к memory leak-ам.
Так что лучше вместо
❌setTimeout(() => fn(arg1, arg2), delay);
Делать:
✅ setTimeout(fn, delay, arg1, arg2);
Особенно если в scope-е долгоживущие объекты. Тут кстати .bind может быть полезен, вот например пару примеров из claude code, где фиксят memory leak-и: #895 #eb272af