Задать вопрос
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting

Как грамотно написать код простого скрипта (js)?

Приветствую!

Для тренировки, написал скрипт для проверки возраста/пароля пользователя для доступа к какой либо последующей информации.

Вопросы:
1. При запуске скрипта, проходит проверка на возраст, но проверка пароля не происходит, в чем проблема?
2. Что улучшить в скрипте? Как Вы написали бы данный скрипт?
3. Вместо console.log возвращать return true/false?

Спасибо!

function Auth() {

	this.start = function() {
		if(this.checkUserAge()) {
			console.log('Доступ к вводу пароля > успех, возраст подходит...')
			if(this.checkUserPass()) {
				console.log('Доступ к приложению > успех, пароль подошел...')
			} else {
				console.log('Доступ к приложению > ошибка, пароль не подошел...')
			}
		} else {
			console.log('Доступ к вводу пароля > ошибка, возраст не подходит...')
		}
	}

	this.checkUserAge = function() {
		if(this.userAge) {
			if(this.userAge >= 18) {
				console.log('Проверка возраста > успех, возраст подходит...')
			} else {
				console.log('Проверка возраста > ошибка, возраст не подходит...')
			}
		} else {
			console.log('Проверка возраста > ошибка, возраст не указан...')
			this.getUserAge()
			this.checkUserAge()
		}
	}

	this.checkUserPass = function() {
		if(this.userPass) {
			if(this.userPass == 123) {
				console.log('Проверка пароля > успех, пароль подошел...')
			} else {
				console.log('Проверка пароля > ошибка, пароль не подходит...')
			}
		} else {
			console.log('Проверка пароля > ошибка, пароль не указан...')
			this.getUserPass()
			this.checkUserPass()
		}
	}

	this.getUserAge = function() {
		this.userAge = prompt('Количество полных лет?', 0)
		console.log('Данные > пользователь указал свой возраст...')
	}

	this.getUserPass = function() {
		this.userPass = prompt('Ваш пароль?', 0)
		console.log('Данные > пользователь указал пароль...')
	}

}

let auth = new Auth()
auth.start()


UPD: обновил скрипт, добавил return true/false. Выполняет проверку if(this.checkUserAge()), но до проверки if(this.checkUserPass()) не доходит, в чем проблема?
Скрипт

function Auth() {

	this.start = function() {

		// упешно выполняет проверку
		if(this.checkUserAge()) {
			console.log('Доступ к вводу пароля > успех, возраст подходит...')

			// до сюда не доходит...
			if(this.checkUserPass()) {
				console.log('Доступ к приложению > успех, пароль подошел...')

			} else {
				console.log('Доступ к приложению > ошибка, пароль не подошел...')
			}
		} else {
			console.log('Доступ к вводу пароля > ошибка, возраст не подходит...')
		}

	}

	this.checkUserAge = function() {
		if(this.userAge) {
			if(this.userAge >= 18) {
				console.log('Проверка возраста > успех, возраст подходит...')
				return true
			} else {
				console.log('Проверка возраста > ошибка, возраст не подходит...')
				return false
			}
		} else {
			console.log('Проверка возраста > ошибка, возраст не указан...')
			this.getUserAge()
			this.checkUserAge()
			return false
		}
	}

	this.checkUserPass = function() {
		if(this.userPass) {

			if(this.userPass == 123) {
				console.log('Проверка пароля > успех, пароль подошел...')
				return true
			} else {
				console.log('Проверка пароля > ошибка, пароль не подходит...')
				return false
			}
		} else {
			console.log('Проверка пароля > ошибка, пароль не указан...')
			this.getUserPass()
			this.checkUserPass()
			return false
		}
	}

	this.getUserAge = function() {
		this.userAge = prompt('Количество полных лет?', 0)
		console.log('Данные > пользователь указал свой возраст...')
	}

	this.getUserPass = function() {
		this.userPass = prompt('Ваш пароль?', 0)
		console.log('Данные > пользователь указал пароль...')
	}

}

let auth = new Auth()
auth.checkUserAge()

  • Вопрос задан
  • 668 просмотров
Подписаться 1 Простой Комментировать
Решение пользователя Владимир Проскурин К ответам на вопрос (4)
Vlad_IT
@Vlad_IT
Front-end разработчик
Что означает эта строка?
if(this.checkUserAge) {
она означает, что вы делаете проверку, существует ли свойство checkUserAge, а оно является у вас методом, значит условие будет выполняться всегда. Скорее всего, вы хотели написать так
if(this.userAge) {
Ответ написан