Я пытаюсь понять закрытие, и я смотрю учебник javascript W3Schools. Это один из примеров, которые они дают, создавая счетчик.нужно больше объяснений на примере закрытия w3schools javascript
<body>
<p>Counting with a local variable.</p>
<button type="button" onclick="myFunction()">Count!</button>
<p id="demo">0</p>
<script>
var add = (function() {
var counter = 0;
return function() {return counter += 1;}
})();
function myFunction(){
document.getElementById("demo").innerHTML = add();
}
</script>
</body>
Пример Объяснение Переменная добавить присваивается значение, возвращаемое самостоятельного вызова функции.
Функция самозапуска только запускается один раз. Он устанавливает счетчик в (0) и возвращает выражение функции.
Таким образом, добавление становится функцией. «Замечательная» часть состоит в том, что она может получить доступ к счетчику в родительской области.
Это называется закрытие JavaScript. Это позволяет для функции иметь «частные» переменные.
Счетчик защищен областью действия анонимной функции, а может быть изменен только с помощью функции добавления.
Примечание Закрытие представляет собой функцию, имеющую доступ к родительской области, даже после закрытия родительской функции.
Объяснение не плохо, но некоторые вещи неясны. Почему функция self invoking лучше всего использовать? Почему вложенная анонимная функция не является функцией self invoking? И почему вы должны вернуть всю анонимную функцию, когда счетчик уже возвращается внутри него?
Это просто, как w3schools написал пример. Он работает, хотя вот ссылка на окно «Попробовать». http://www.w3schools.com/js/tryit.asp?filename=tryjs_function_counter3. Попробуйте код. Оно работает. – Spilot
Позвольте мне изменить это .... – Spilot