Javascript.RU

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

Параметры функции
Здравствуйте! Делаю первые шаги, спрашиваю элементарное, в поиске не нашел (видимо неверно формулировал запрос).
Есть функция с двумя параметрами. Можно ли получить значение изменившегося параметра? Я, конечно, знаю что параметры преобразовываются в локальные переменные и недоступны вне функции, но для чего тогда используется переменная error? Пожалуйста, приведите примеры использования функции для проверки ИНН:
function validateInn(inn, error) {
	var result = false;
	if (typeof inn === 'number') {
		inn = inn.toString();
	} else if (typeof inn !== 'string') {
		inn = '';
	}
	if (!inn.length) {
		error.code = 1;
		error.message = 'ИНН пуст';
	} else if (/[^0-9]/.test(inn)) {
		error.code = 2;
		error.message = 'ИНН может состоять только из цифр';
	} else if ([10, 12].indexOf(inn.length) === -1) {
		error.code = 3;
		error.message = 'ИНН может состоять только из 10 или 12 цифр';
	} else {
		var checkDigit = function (inn, coefficients) {
			var n = 0;
			for (var i in coefficients) {
				n += coefficients[i] * inn[i];
			}
			return parseInt(n % 11 % 10);
		};
		switch (inn.length) {
			case 10:
				var n10 = checkDigit(inn, [2, 4, 10, 3, 5, 9, 4, 6, 8]);
				if (n10 === parseInt(inn[9])) {
					result = true;
				}
				break;
			case 12:
				var n11 = checkDigit(inn, [7, 2, 4, 10, 3, 5, 9, 4, 6, 8]);
				var n12 = checkDigit(inn, [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8]);
				if ((n11 === parseInt(inn[10])) && (n12 === parseInt(inn[11]))) {
					result = true;
				}
				break;
		}
		if (!result) {
			error.code = 4;
			error.message = 'Неправильное контрольное число';
		}
	}
	return result;
}
Ответить с цитированием
  #2 (permalink)  
Старый 25.01.2019, 11:28
Интересующийся
Отправить личное сообщение для Wic_ Посмотреть профиль Найти все сообщения от Wic_
 
Регистрация: 25.01.2019
Сообщений: 13

Сейчас читаю об объекте Error, но все равно не понятно, как правильно использовать функцию.
Ответить с цитированием
  #3 (permalink)  
Старый 25.01.2019, 11:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

var error = {};
validateInn(тут проверяемое значение, а это ссылка на error)


Вот только какая-то бессмыслица получается, зачем же при проверке проверять все, а не прерывать ее при первой ошибке. Тогда уж все найденные несоответствия помещать в объект.
Ответить с цитированием
  #4 (permalink)  
Старый 25.01.2019, 11:44
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

Сообщение от laimas
Вот только какая-то бессмыслица получается, зачем же при проверке проверять все, а не прерывать ее при первой ошибке.
Скрипт осуществляет проверку до первой ошибки, а не все сразу.
Ответить с цитированием
  #5 (permalink)  
Старый 25.01.2019, 11:47
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

А да, виноват, там же только цифры )
Ответить с цитированием
  #6 (permalink)  
Старый 25.01.2019, 12:09
Интересующийся
Отправить личное сообщение для Wic_ Посмотреть профиль Найти все сообщения от Wic_
 
Регистрация: 25.01.2019
Сообщений: 13

Спасибо! Нет ошибок?
function proverkaInn(IdElement)
  {
	 var elem = document.getElementById(IdElement);
	 var strINN = elem.value;
	 var error = {};
	 if (!validateInn(strINN, error)) {
        elem.style.border = '2px solid red';
        console.log(error.message);
     } else {
        elem.style.border = '2px solid black';
     }

  }

Что-консоль плагина Firebug Firefox у меня ни чего не показывает. А штатная консоль работает.

Последний раз редактировалось Wic_, 25.01.2019 в 12:12.
Ответить с цитированием
  #7 (permalink)  
Старый 25.01.2019, 12:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Wic_
плагина Firebug Firefox
Не поддерживает лиса этот плагин уже давно, у нее теперь свой похожий, но более расширенный отладчик.

А не показывает потому, что функция validateInn(inn, error) возвращает не объект error, которого теперь для нее нет в глобальной области видимости, а result.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обработать переданные функции параметры как массив? javascript_pupil Общие вопросы Javascript 7 19.08.2016 13:59
Параметры функции kilohertz_. Общие вопросы Javascript 4 20.01.2015 18:26
Параметры функции Pro100tom Events/DOM/Window 1 23.07.2013 18:32
Возврат данных через параметры функции jsjob Общие вопросы Javascript 4 11.03.2013 20:49
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21