Глобальные переменные в 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, время: 22:01. |