Подтвердить что ты не робот

Возврат булевского значения в функции JavaScript

Я делаю проверку на стороне клиента, чтобы проверить, соответствуют ли пароли. Но функция проверки всегда возвращает undefined.

function validatePassword(errorMessage)
{
   var password = document.getElementById("password");
   var confirm_password = document.getElementById("password_confirm");

   if(password.value)
   {
      // Check if confirm_password matches
      if(password.value != confirm_password.value)
      {
         return false;
      }
   }
   else
   {
      // If password is empty but confirm password is not
      if(confirm_password.value)
      {
         return false;
      }
   }
   return true;
}

Обратите внимание, что validatePassword вызывается из функции-члена объекта Form.

function Form(validation_fn)
{
   // Do other stuff
   this.submit_btn = document.getElementById("submit");
   this.validation_fn = validation_fn;
}

Form.prototype.submit = funciton()
{
   var result;
   if(this.validation_fn)
   {
      result = this.validation_fn();
   }

   //result is always undefined
   if(result)
   {
       //do other stuff
   }
}
4b9b3361

Ответ 1

Вы можете упростить это:

  • Проверьте, не является ли он пустым.
  • Проверьте, равны ли они

Это приведет к тому, что всегда будет возвращать логическое значение. Ваша функция также должна всегда возвращать логическое значение, но вы можете видеть, что это немного лучше, если вы упростите свой код:

function validatePassword()
{
   var password = document.getElementById("password");
   var confirm_password = document.getElementById("password_confirm");

   return password.value !== "" && password.value === confirm_password.value;
       //       not empty       and              equal
}

Ответ 2

Вы можете обернуть свое возвращаемое значение в логической функции

Boolean([return value])

Это гарантирует, что все значения ложности ложны, а истинные утверждения верны.