September 28th, 2010

pk

JavaScript функция проверки замусоривания

Переменные постоянно рвутся к глобальной области видимости. Особенно жуткими бывают всякие i и j, которые не понятно как искать.

Для периодического отстрела, написал функцию window_diff. Она запоминает состояние объекта window: до и после вызова функции, и выдает разницу.

<script type="text/javascript">
    function window_diff()
    {
         var ary = arguments.callee.ary, i, new_ary = [];
         if (ary) {
              for (i in window) {
                   if (!~ary.indexOf(i)) {
                        new_ary.push(i);
                   }
              }
              console.log('window_diff', new_ary);
              arguments.callee.ary = null;
              return ary;
         }
         ary = [];
         for (i in window) {
              ary.push(i);
         }
         return arguments.callee.ary = ary;
    }

    window_diff();
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
    window_diff();
</script>

Интересно, а можно переписать этот код сеттерами? Тогда можно следить, кто мусорит во время жизни страницы.

Не стоит забывать, что JSLint умеет подсказывать, какие глобальные переменные мы наобъявляли. Иногда проще скормить код ему.

А может это умеют делать еще какие-то инструменты?