Здравствуйте! Делаю первые шаги, спрашиваю элементарное, в поиске не нашел (видимо неверно формулировал запрос).
Есть функция с двумя параметрами. Можно ли получить значение изменившегося параметра? Я, конечно, знаю что параметры преобразовываются в локальные переменные и недоступны вне функции, но для чего тогда используется переменная 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;
}