Код про утечки памяти?
var theThing = null;
var replaceThing = function () {
    var priorThing = theThing;
    // сохранив функцию в переменной, мы невольно сохраняем и контекст (цепочку областей видимости) 
    // в котором она была объявлена
    // т.е. в данном случае priorThing оказался в контексте unused
    var unused = function () {
        if (priorThing) {
            console.log("hi");
        }
    };
    // здесь ссылка на старый объект заменяется новым, 
    // старый объект ожидает съедения GC, 
    // unused так же отправится в пасть GC...
    theThing = {
        longStr: new Array(1000000).join('*'), 
        // ... и все бы хорошо, если бы не один нюанс который происходит здесь
        // как там пишут: both functions share the same lexical environment
        // т.е. здесь у функции будет тот же контекст что и у unused
        // потому что контекст уже пошарен при создании unused
        // т.е. ссылка на старый объект priorThing будет сохраняться 
        // в общем контексте someMethod каждый раз.
        someMethod: function () {
            console.log(someMessage);
        }
    };
};
setInterval(replaceThing, 1000);    // вызываем 'replaceThing' каждую секунду
в итоге мы получаем следующую картину
более подробно об этой утечке info.meteor.com/blog/an-interesting-kind-of-javasc...
подебажить пример можно здесь s.codepen.io/beholderrk/debug/jWGyaY
В памяти сохраняется priorThing потому что он используется в функции unused и при каждом запуске функции replaceThing создаётся новый priorThing и остаётся в памяти