Глобальные переменные в JS
<div id="my"></div> var ClickCounter = 0; document.addEventListener("click", function(e) { ClickCounter++; document.getElementById('my').innerHTML = ClickCounter; }); Говорят глобальные переменные это зло. Как в этом случае сделать не глобальной переменную ClickCounter? |
Оберни это в анонимную функцию
(function() { var ClickCounter = 0; document.addEventListener("click", function(e) { ClickCounter++; document.getElementById('my').innerHTML = ClickCounter; }); })(); |
Замыкание тебе в помощь :)
<!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> |
А если она мне в других местах понадобится а не только в этой функции? Тогда сделать return ClickCounter ? Но тогда она наверное вновь станет глобальной ))
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
document и все элементы это объекты.
Вот прямо в них и пишем document.addEventListener("click", function(e) { this.clickCounter = this.clickCounter++ || 1; document.getElementById('my').innerHTML = this.clickCounter ; alert(document.clickCounter); }); |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
(function(window, document) { //... })(window, document); |
Цитата:
|
Keramet,
совсем без глобальных переменных не получится. А данный способ поможет сильно сократить их количество. |
Часовой пояс GMT +3, время: 20:04. |