Итак, я нашел этот кусок кода, и он, очевидно, работает (как он работал в течение многих лет):
window[someMethod] = function (tmp) {
callback({prop:"val"}, tmp);
// Garbage collect
window[someMethod] = undefined;
try {
delete window[someMethod];
}
catch (e) { }
if (head) {
head.removeChild(script);
}
// head refers to DOM head elem and script refers to some script file elem
};
Интересно узнать, как он работает?
- Как он может установить себе
undefined
в своем теле и try
на delete
сам? - Знает ли браузер, что не выполняет
undefined
и delete
пока звонок не закончится?И как? - Если браузер сразу его удалит, то что будет после?Последняя строка запускается?
- Наконец, вы, ребята, видите эту утечку памяти?Если да, то как?