Как работает такое условие?

Не понимаю, как работает этот код: почему независимо от ответа (true/false ...) он вызывает функцию с аргументом handler(isYes). Вообще плохо понимаю, что здесь написано.

function ask(question, ...handlers) {
  let isYes = confirm(question);

  for(let handler of handlers) {
    if (handler.length == 0) {
      if (isYes) handler();
    } else {
      handler(isYes);
    }
  }

}


ask("Вопрос?", () => alert('Вы ответили да'), result => alert(result));
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
SADFGHJAETJER
@SADFGHJAETJER
Перебирает список переданных ему обработчиков.
length от функции возвращает кол-во её аргументов.

если аргументов 0:
   - если isYes true
        - просто вызываем handler
иначе
   - вызываем handler и передаем аргументом isYes
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rst0
@Rst0
возможно, что true/false - просто текст "true" или "false"
поставьте console.log()
for(let handler of handlers) {
     console.log(handler);    //   <---  this 
    if (handler.length == 0) {
      
        if (isYes) { 
          handler() }
        
    } else {
      handler(isYes);
    }
  }

и гляньте, чего там приходит в обоих случаях, потом условия пропишите
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы