Не могу разобраться с кодом по проверке валидности пароля, не понимаю некоторые моменты, как работает код.
Задача такая:
Для начала вам необходимо запросить пароль у пользователя при помощи prompt.
Отобразите сообщение “Введите пароль”.
Пароль должен удовлетворять следующим условиям:
1. Длина пароля должна быть минимум 3 символа и не больше 20 символов (включая
20).
2. Пароль должен содержать минимум 1 прописную (большую) букву.
3. Пароль должен содержать минимум 1 цифру.
Если все условия удовлетворены, то выведите при помощи alert сообщение “Пароль
валидный. Добро пожаловать в аккаунт!”, иначе - “Пароль не удовлетворяет условиям!
Перезагрузите страницу и попробуйте ввести его еще раз.”
const password = prompt('Введите пароль');
const errorMessage = 'Пароль не удовлетворяет условиям! Перезагрузите страницу и попробуйте ввести его еще раз.';
const successMessage = 'Пароль валидный. Добро пожаловать в аккаунт!';
if (password.length < 3 || password.length > 30) {
alert(errorMessage);
} else {
let hasBigSymbol = false;
let hasNumbers = false;
for (let i = 0; i < password.length; i += 1) {
const symbol = password[i];
const isNumberSymbol = !isNaN(parseInt(symbol));
if (symbol === symbol.toUpperCase() && !isNumberSymbol) {
hasBigSymbol = true;
}
if (isNumberSymbol) {
hasNumbers = true;
}
}
if (!hasBigSymbol || !hasNumbers) {
alert(errorMessage);
} else {
alert(successMessage);
}
}
Мне не понятно что конкретно делает:
const isNumberSymbol = !isNaN(parseInt(symbol));
В консоли если переменная число, то выводит тру, если буква, то фолс.
parseInt - преобразует в целое число или возвращает Nan, а что делает дальше !isNan?
И что значит воскл. знак в условиях if
if (!hasBigSymbol || !hasNumbers)
Если есть время можете объяснить код.