Тестируем имена переменных, внесённых Нашим скриптом в область глобальной видимости
Часто бывает упустив в длинном коде поставить var перед переменной, переменная вылезает в Global и либо портиться сама, либо портит чужие скрипты...
И потом не понимаешь, нормальный код, вроде должен работать, а совместно(или просто сам по себе) - глючит. Типично сам по себе, когда переменная из одной функции вылезает в область видимости родителя или выше по списку.(Можно тестировать и отдельные функции, ставя их в теги <script> (правдо надо запускать, можно обернуть всё в анонимную функцию, чтобы запускающий код не добавлял в Global ) Тестируем имена переменных, внесённых Нашим скриптом в область глобальной видимости Цитата:
Без Раскраски: <!-- Тестируем имена переменных, внесённых Нашим скриптом в область глобальной видимости! --> <script type="text/javascript"> $={} //Добавляем, если на странице нет jQuery $.a = JSON.parse(JSON.stringify(Object.keys(window))) </script> <!-- !!Тестируемый скрипт (Пример) --> <script type="text/javascript"> //Тестируемый скрипт!! var asdsafsd = 1; var tyrtut = 4; </script> <!--//Концовка тестирующего скрипта --> <script type="text/javascript"> $.b = JSON.parse(JSON.stringify(Object.keys(window))); (function() {var obj={}; for(var i=0;i<window['$']['b'].length;i++)obj[window['$']['b'][i]]=1; for(var i=0;i<window['$']['a'].length;i++) delete obj[window['$']['a'][i]]; alert('Переменные вносимые тестируемым скриптом в Global:\n'+JSON.parse(JSON.stringify(Object.keys(obj))).join(',\n')); }()); </script> Вчера чёто понадобилось найти в длинносвернутом коде ляп без var - может кому понадобиться |
Анализатор в любой нормальной идешке или eslint это всё отследит
|
Deff, а если просто включить use strict? :)
|
Ruslan_xDD,
Я описал в концовке мою возникшую проблему, есть свернутый длиннокод (не мой) Где-то переменная вылезла, нун найти имя и подставить var (куда ставить use strict ? там сто функций (может меньше, но я не лез внутрь) В итоге обернул все в объект (obj), и найденной переменной в начале объекта поставил obj[Myfindvar] //Можно наверно обернуть не в объект, а в функцию, и поставить в начале var Myfindvar; будет аналогично, Прост объект было удобней удалить по окончании работы |
Часовой пояс GMT +3, время: 16:52. |