Показать сообщение отдельно
  #1 (permalink)  
Старый 25.01.2019, 10: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;
}
Ответить с цитированием