Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.02.2016, 01:46
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Тестируем имена переменных, внесённых Нашим скриптом в область глобальной видимости
Часто бывает упустив в длинном коде поставить var перед переменной, переменная вылезает в Global и либо портиться сама, либо портит чужие скрипты...
И потом не понимаешь, нормальный код, вроде должен работать, а совместно(или просто сам по себе) - глючит. Типично сам по себе, когда переменная из одной функции вылезает в область видимости родителя или выше по списку.(Можно тестировать и отдельные функции, ставя их в теги <script> (правдо надо запускать, можно обернуть всё в анонимную функцию, чтобы запускающий код не добавлял в Global )

Тестируем имена переменных, внесённых Нашим скриптом в область глобальной видимости

Цитата:
<!-- Тестируем имена переменных, внесённых Нашим скриптом в область глобальной видимости! -->
<script type="text/javascript">
$.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(o bj))).join(',\n'));
}());
</script>
===================================
Без Раскраски:

<!-- Тестируем имена переменных, внесённых Нашим скриптом в область глобальной видимости! -->
 <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 - может кому понадобиться

Последний раз редактировалось Deff, 09.02.2016 в 02:22.
Ответить с цитированием
  #2 (permalink)  
Старый 09.02.2016, 08:58
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

Анализатор в любой нормальной идешке или eslint это всё отследит
Ответить с цитированием
  #3 (permalink)  
Старый 09.02.2016, 12:41
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Deff, а если просто включить use strict?
Ответить с цитированием
  #4 (permalink)  
Старый 09.02.2016, 17:57
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Ruslan_xDD,
Я описал в концовке мою возникшую проблему, есть свернутый длиннокод (не мой)
Где-то переменная вылезла, нун найти имя и подставить var (куда ставить use strict ? там сто функций (может меньше, но я не лез внутрь)

В итоге обернул все в объект (obj), и найденной переменной в начале объекта поставил obj[Myfindvar]
//Можно наверно обернуть не в объект, а в функцию, и поставить в начале var Myfindvar; будет аналогично,
Прост объект было удобней удалить по окончании работы

Последний раз редактировалось Deff, 09.02.2016 в 18:21.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Область видимости переменных (this) Артем163 Общие вопросы Javascript 4 21.03.2014 15:32
Помогите пож с JSON, передача id ссылки. wisma jQuery 22 10.02.2014 15:36
Область видимости переменных positiveman Общие вопросы Javascript 3 14.01.2013 15:08
область видимости переменных в prototype (тупой вопрос)) stnw Общие вопросы Javascript 3 11.02.2011 19:25
область видимости переменных jetli13 Общие вопросы Javascript 3 17.09.2010 11:00