Вызов функций с переменным числом аргументов

Для объекта определен также объект типа Array с именем arguments. Этот объект, доступный только в теле функции, позволяет обрабатывать вызов функции для разного количества аргументов.

Свойство length объекта arguments содержит количество аргументов, переданных в функцию при текущем вызове, а сам объект содержит массив аргументов, переданных в функцию при текущем вызове.

Пример 4.4.59. Вызов функции с переменным числом аргументов:

function addNumbers(a, b)

{

// Если переданное в функцию количество аргументов

// меньше заданного в определении функции

if(arguments.length < addNumbers.length)

{

// Вывод сообщения

alert("Количество аргументов при вызове " +

"функции addNumbers меньше " + addNumbers.length);

// Возврат нечислового значения NaN

return Number.NaN;

}

// Начальное значение суммы

sum = 0;

// Цикл по заданным аргументам

for(i = 0; i < arguments.length; i++)

{

// Получение текущего аргумента

currentArg = arguments[i];

// Преобразование аргумента в числовую форму

currentNumber = new Number(currentArg)

// Если аргумент нечисловой

if(isNaN(currentNumber))

// Вывод сообщения

alert("Нечисловой аргумент '" +

currentArg + "' игнорируется");

else

// Увеличение суммы на значение

// текущего аргумента

sum += currentNumber;

}

// Возврат значения суммы

return sum;

}

// Вызовы функции addNumbers

// с разным количеством аргументов

sum0 = addNumbers(2);

sum1 = addNumbers(3,5,7);

sum2 = addNumbers(8,"-5.3");

sum3 = addNumbers(8,"x12", "0x15", 32);

// Вывод результатов

alert("sum0=" + sum0 + " sum1=" + sum1 +

" sum2=" + sum2 + " sum3=" + sum3);

В этом фрагменте сценария задана функция addNumbers(), которая переводит заданные при вызове аргументы в числовую форму и возвращает их сумму. Если среди аргументов встречается аргумент, который не может быть переведен в числовую форму, выдается предупреждающее сообщение и аргумент игнорируется. Если задано меньше аргументов, чем указано в определении функции, возвращается значение NaN.

Далее во фрагменте вызывается функция с разным числом аргументов и выводятся сообщения, а также результаты суммирования:

 

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: