Вот есть такой код:
<html>
<body>
<a href="#test" id="test">test</a>
<script>
function test()
{
var n = {c: 0};
function clicker()
{
console.log(++n.c);
}
document.getElementById('test').addEventListener("click", clicker);
return n;
}
var a = test();
</script>
</body>
</html>
Здесь, очевидно, clicker будет жить, поскольку повешен в качестве обработчика, а n замкнут и поэтому по кликам n.c будет наращивать значение. При этом обращение к a.c будет выдавать свежее значение n.c.
Значит, a ссылается на n.
Но вот вопрос - если бы не было функции cliker и создаваемого ей замыкания, то что бы осталось в памяти от функции test() из-за того, что она вернула ссылку на созданный объект? Ничего кроме объекта?
Вообще, насколько я понял в JS нет аналога "слабых ссылок" AS3, поэтому как проверять код на утечки - не пойму. Что посоветуете? DevTools?