Зачем return после редиректа?

268
29 октября 2017, 21:26

Есть система авторизации. Вот её основная часть:

  private authUser(): void {
    if(!this.login.trim().length || !this.password.trim().length) { 
        alert('Заполните поля');
        return;
    };
    for(var prop in this.users) {
      if (!this.users.hasOwnProperty(prop)) continue;
      if(this.users[prop].login == this.login.trim() && this.users[prop].password == this.password.trim()) {
            this.globalVarsService.authUser = this.users[prop];
            this.router.navigate(['/main']); 
        return;
      } 
    }
    alert('Ошибка авторизации. Нет такого пользователя.');
  };

Здесь много кода, но главное в том, что если срабатывает условие if в цикле for, то происходит редирект на страницу приложения. А если цикл for не находит ни одного совпадения, то выводится сообщение.

Мне непонятно почему эта конструкция работает только если после команды редиректа стоит команда return. Без неё даже при успешной авторизации сначала выводится сообщение и только после этого происходит редирект

Answer 1

return завершает функцию до того, как будет выведено сообщение об ошибке и выступает в качестве else.

Аналогичный код:
 function fn(val){
     if(val===3){
         alert("gg");
         return;
     }
     alert("not gg");
 }
READ ALSO
нужно каждый час запускать Electron АПКУ на windows

нужно каждый час запускать Electron АПКУ на windows

всем привет! ситуация следующая - мне нужно каждый час запускать exe-файл или скрипт mainjs в виндовс 7,8,10

196
Клик по ссылке с помощью PhantomJS

Клик по ссылке с помощью PhantomJS

Используя phantomjs получаю страничкуКак сделать клик по элементу

323
Проблема с выводом длины песни на экран

Проблема с выводом длины песни на экран

Есть функция, которая переводит длину песни в минуты и секунды(изначально дли в секундах)

239