Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Глобальные переменные в JS (https://javascript.ru/forum/misc/60582-globalnye-peremennye-v-js.html)

mrbanan 08.01.2016 20:57

Глобальные переменные в JS
 
<div id="my"></div>

var ClickCounter = 0;

document.addEventListener("click", function(e) {
    ClickCounter++;
    document.getElementById('my').innerHTML = ClickCounter;
});

Говорят глобальные переменные это зло. Как в этом случае сделать не глобальной переменную ClickCounter?

Safort 08.01.2016 21:29

Оберни это в анонимную функцию
(function() {
  var ClickCounter = 0;
 
  document.addEventListener("click", function(e) {
      ClickCounter++;
      document.getElementById('my').innerHTML = ClickCounter;
  });
})();

Keramet 08.01.2016 21:43

Замыкание тебе в помощь :)
<!DOCTYPE html>
<html lang="ru">
  <head>
	<meta charset="UTF-8"/>
	<title>Glob</title>
	<script type="text/javascript">
		window.onload = function() {
			var ClickCounter = 0;
			
			document.addEventListener("click", function(e) {
				ClickCounter++;
				document.getElementById('my').innerHTML = ClickCounter;
			});
		};
	</script>
  </head>
  <body>
     <div id="my"></div>
  </body>
</html>

mrbanan 08.01.2016 22:04

А если она мне в других местах понадобится а не только в этой функции? Тогда сделать return ClickCounter ? Но тогда она наверное вновь станет глобальной ))

Keramet 08.01.2016 22:19

Цитата:

Сообщение от mrbanan (Сообщение 403014)
А если она мне в других местах понадобится ...

кто "она"? :lol:

mrbanan 08.01.2016 22:27

Цитата:

кто "она"
Переменная )) (она)

Safort 08.01.2016 22:28

Цитата:

Сообщение от Keramet (Сообщение 403017)
кто "она"? :lol:

Очевидно, что переменная.

Safort 08.01.2016 22:29

Цитата:

Сообщение от mrbanan (Сообщение 403014)
А если она мне в других местах понадобится а не только в этой функции? Тогда сделать return ClickCounter ? Но тогда она наверное вновь станет глобальной ))

Сохрани результат в какое-нибудь общее хранилище, которое доступно глобально и уже из него бери нужные данные.

Keramet 08.01.2016 22:38

Цитата:

Сообщение от Safort (Сообщение 403019)
Очевидно, что переменная.

не очевидно. может "она" - функция?

Keramet 08.01.2016 22:39

Цитата:

Сообщение от Safort (Сообщение 403020)
Сохрани результат в какое-нибудь общее хранилище, которое доступно глобально и уже из него бери нужные данные.

приведите, плз, пример общего хранилища


Часовой пояс GMT +3, время: 02:38.