Обработчик событий Javascript выполняет всю функцию с самого начала

#javascript #dom-events

#javascript #dom-события

Вопрос:

У меня очень странное поведение, я не понимаю, почему это происходит

Консоль.журнал в конце печатается один раз в конце выполнения скрипта, а затем снова для каждого происходящего события, и массив tempOutput отображается три раза, каждый раз с разными значениями.

     var tempOutput = []

    if (limited) {
      var selectseries = mvc.Components.getInstance('selectseries');

      selectseries.on("change", function(event) {

          let vfx = setInterval(
            function() {
              dropSelect.classList.add('pulse-on');
              setTimeout(
                function() {
                  dropSelect.classList.remove('pulse-on')
                }, 1200
              )
            }, 2400);
          defaultTokenModel.on("change:"   dropDownTyp.tokenName, function(e) {
            if (vfx) {
              clearInterval(vfx);
              document.querySelector('#drop_arrow').style.background = ''
            }
          });
        } else {
          dropSelect.setAttribute('value', '<Select '   label   '>')
          dropSelect.classList.add('disable')
        }
      })
    }


    console.log("how much?")
    console.log(tempOutput)
  

Я ожидал бы увидеть массив, напечатанный один раз, и один раз «сколько?»

Комментарии:

1. Приведенный вами код заключен в function или его в глобальную область видимости. Если она находится в глобальной области видимости, то наличие нескольких журналов невозможно

2. обернут внутри функции

3. попробуйте объявить vfx в глобальной области видимости и удалить let изнутри. А также в конце появляется ошибка синтаксического анализа, еще одна дополнительная } .

4. @MaheerAli нет .. проблема не в этом 🙁