Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.11.2013, 23:10
Новичок на форуме
Отправить личное сообщение для Iceman90 Посмотреть профиль Найти все сообщения от Iceman90
 
Регистрация: 12.11.2013
Сообщений: 2

Uncaught SyntaxError: Unexpected identifier
Я извиняюсь, если вопрос тупой, я только учу JS. Вот программка Банкомат и в 32 строке в консольке выдаёт Uncaught SyntaxError: Unexpected identifier...




var ATM = {
	is_auth: false,
	current_user: false,
	cash: 1000,
	users:[
		{number: "0025", pin: "132", debet: 675, group: "user"},
		{number: "0001", pin: "000", debet: 1000000, group: "user"},
		{number: "1111", pin: "111", debet: 0, group: "admin"}
		],
	getcash: function(amount) {
		if(this.is_auth){
			if(amount > 0 && amount <= this.cash && this.users[this.current_user].debet >= amount){
			this.cash -= amount;
			this.users[this.current_user].debet -= amount;
			return amount;
			} else {
				return "no money";
		}
		}else{
		return "go auth";
		}
	},
	auth: function(number, pin){
		for(i=0; i < this.users.length; i++) {
			if(this.users[i].number == number && this.users[i].pin == pin) {
				this.is_auth = true;
				this.current_user = i;
				break;
			}
		}
	}
	loadcash: function(bablo){
		if(this.is_auth){
			if(bablo > 0 && this.users[i].number == number && this.users[i].pin == pin && this.users[i].group == "admin") {
			this.cash = this.cash + bablo;
			} else {
				return "you are not admin";
			}
			}else{
			return "go auth";
		}
	},
			
		
	} 
	
};
Ответить с цитированием
  #2 (permalink)  
Старый 12.11.2013, 23:16
Новичок на форуме
Отправить личное сообщение для Iceman90 Посмотреть профиль Найти все сообщения от Iceman90
 
Регистрация: 12.11.2013
Сообщений: 2

Понял, запятой нет, но код всё равно не работает(
Ответить с цитированием
  #3 (permalink)  
Старый 14.11.2013, 21:12
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Думаю, проблема где-то в отступах и else'ах.

Вот этот вариант работает:

var ATM = {
        is_auth: false,
        current_user: false,
        cash: 1000,
        users:[
            {number: "0025", pin: "132", debet: 675, group: "user"},
            {number: "0001", pin: "000", debet: 1000000, group: "user"},
            {number: "1111", pin: "111", debet: 0, group: "admin"}
            ],
        getcash: function(amount) {
            if (this.is_auth) {
                if(amount > 0 && amount <= this.cash && this.users[this.current_user].debet >= amount){
                    this.cash -= amount;
                    this.users[this.current_user].debet -= amount;
                    return amount;
                } else {
                    return "no money";
                }
            } else {
                return "go auth";
            }
        },
        auth: function(number, pin){
            for (i=0; i < this.users.length; i++) {
                if (this.users[i].number == number && this.users[i].pin == pin) {
                    this.is_auth = true;
                    this.current_user = i;
                    break;
                }
            }
        },
        loadcash: function (bablo) {
            if (this.is_auth) {
                if (bablo > 0 && this.users[i].number == number && this.users[i].pin == pin && this.users[i].group == "admin") {
                    this.cash = this.cash + bablo;
                } else {
                    return "you are not admin";
                }
            } else {
                return "go auth";
            }
        }
    };
Ответить с цитированием
  #4 (permalink)  
Старый 14.11.2013, 21:17
Аватар для ixth
Профессор
Отправить личное сообщение для ixth Посмотреть профиль Найти все сообщения от ixth
 
Регистрация: 19.01.2010
Сообщений: 354

Кстати, в самой программе кое-где есть ошибки. Например, условие в loadcash использует несуществующую переменную number.
Вообще, такие длинные условия лучше разбивать на логические переменные. Например, так:

    …
    var user = this.users[i]
        babloEst = (bablo > 0),
        numberMatches = (user.number == number),
        pinMatches = (user.pin == pin),
        isAdmin = (user.group == "admin");
    if (babloEst && numberMatches && pinMatches && isAdmin) {
    …
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Uncaught TypeError: Object [object global] has no method valyan Events/DOM/Window 4 06.08.2013 16:38
Uncaught SyntaxError: Unexpected identifier serg123 Общие вопросы Javascript 3 02.07.2013 19:37
Ext.data.Record.create - Uncaught TypeError: Cannot read property 'items' of undefine potkin ExtJS 2 01.07.2012 23:29
Uncaught ReferenceError: Class is not defined igshul Javascript под браузер 3 24.04.2012 11:49
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34