Привет всем. Изучаю JavaScript. Остановился на теме "Замыкание". Есть код
window.onload = function()
{
var button = document.getElementById("clickme");
var div = document.getElementById("message");
var message = "You clicked me ";
var count = 0;
button.onclick = function()
{
count ++;
div.innerHTML = message + count + " times!";
}
};
В книге написано что в этот код содержит три свободные переменные div, message, count.
Вопрос А почему button не является свободным?
Простите за такой элементарный вопрос.
Нашел определение, что "свободные переменные — это переменные, которые не объявлены локально и не передаются в качестве параметра". Если посмотреть в замыкание, то мы ссылаемся на message, div и count, которые как раз не передаются как параметры в замыкание и не объявлены в нем локально.
Позже заглянул в инструменты разработчика и обнаружил, что this хранит ссылку на button и считается локальной переменной. Получается, что button скорее контекст исполнения функции нежели переменная переданная в замыкание, что логично ведь мы пишем button.onclick, где onclick функция-замыкание, а button - объект в контексте которого она вызывается.
Поправьте, если я ошибаюсь.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей