Анонимная функция в прослушивателе событий и анонимная функция для работы в прослушивателе событий

У меня есть переменная p1Score, которая является числом, и p1ScoreDisplay, которая является содержимым диапазона. Я сделал прослушиватель событий, который добавляет 1 к счету каждый раз, когда по нему щелкают, и обновляет диапазон, используя:

p1.addEventListener("click", function()
{   
p1Score++;
p1ScoreDisplay.textContent = p1Score;
});

Это работает правильно, однако я не хочу делать функцию анонимной. Я создал отдельную функцию и сделал анонимную функцию, которая переходит к функции следующим образом:

function addPoint(score, scoreDisplay)
{
score++;
scoreDisplay.textContent = score;
}

p1.addEventListener("click", function(){addPoint(p1Score,p1ScoreDisplay);});

В этой версии событие выполняется только один раз, в то время как другая происходит каждый раз, и я не уверен, почему?


person TheShield    schedule 25.12.2017    source источник
comment
на самом деле вы сравниваете два разных подхода: один с глобальной переменной, а другой с переданным примитивом и объектом. если вы возьмете два объекта, вы можете использовать этот объект для увеличения свойства, а также использовать его в другом событии.   -  person Nina Scholz    schedule 25.12.2017


Ответы (1)


В первом примере вы увеличиваете значение p1Score. Следующий щелчок снова увеличивает его.

Во втором примере вы копируете значение p1Score в score, а затем увеличиваете значение score. Следующий щелчок копирует исходное и неизмененное значение p1Score в score и снова увеличивает его.

person Quentin    schedule 25.12.2017