Javascript arguments

Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье вы узнали про область видимости переменных в Javascript. В данной статье я бы хотел поговорить про объект arguments в Javascript. Все аргументы функции являются локальными переменными. Давайте создадим функцию, которая будет возвращать сумму двух чисел:
function sum(a,b) { return a + b; } alert(sum(10,5)); //выйдет 15
В данном примере переменные "a" и "b" являются локальными переменными функции "sum".
Возникает вопрос: а что делать, если мы хотим возвращать сумму произвольного числа переменных? Не указывать же весь список параметров в определении функции. Для этого у каждой функции есть локальная переменная – объект arguments, который предоставляет доступ ко всем аргументам переданным функции.
Давайте переделаем наш пример:
function sum() { var sum = 0; for (var i = 0; i < arguments.length; i++) { sum += arguments[i]; } return sum; } alert(sum(10,5,5,2,3));//выйдет 25
У объекта arguments есть 2 свойства:
- length — количество переданных аргументов
- callee — ссылка на саму функцию
С помощью свойства arguments.callee.length есть возможность узнать количество аргументов, которое функция ожидает получить (количество переменных, использованных при определении функции в качестве аргументов). Если, например, у нас есть функция, ожидающая передачи строго трех аргументов, а ей при вызове передается два, то произойдет ошибка. Чтобы избежать ее, можно перед исполнением кода сравнить эти значения. Давайте напишем такой пример:
function summa3chisel(a,b,c) { if (arguments.length == arguments.callee.length) { return a + b + c; } else { alert("Передано неверное количество аргументов"); } } alert(summa3chisel(5,1));
В качестве домашнего задания: напишите функцию, которая возвращает произведение чисел.
function proizv() { for (var i = 0, buf = 1; i < arguments.length; i++) { buf *= arguments[i]; } return buf; } alert(proizv(1,2,3,4));//выйдет 24
В данной небольшой статье вы узнали про объект arguments в Javascript и о том, как с ним работать.
На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.