
Поэтому, если arg4 не был передан в приведенном выше примере, то он является undefined и тело оператора if не выполняется.
Как быть, когда трудно определить, сколько потребуется аргументов? Можно иметь функцию, которая получает от 1 до n аргументов и выполняет с каждым из них одну и ту же задачу. На этот случай JavaScript имеет в каждой функции объект arguments. Объект arguments содержит все аргументы функции:
function myFunction(){ for(var i=0; i<arguments.length; i++){ alert(arguments[i].value); }}
Этот код сообщит значение всех переданных ему объектов. Если передать 100 объектов, то будет получено 100 сообщений. Более полезной функцией было бы, возможно, скрытие/вывод всех переданных функции объектов.
Один из наиболее интересных аспектов JavaScript - идея о том, что функции являются объектами и могут передаваться как поле ввода, изображение или что-то еще, что может быть. Посмотрите, например, следующий код:
<script type="text/javascript">function multiply(){ var out=1; for(var i=0; i<arguments.length; i++){ out *= arguments[i]; } return out;}function add(){ var out=0; for(var i=0; i<arguments.length; i++){ out += arguments[i]; } return out;}function doAction(action){ alert(action(1, 2, 3, 4, 5));}</script><button onclick="doAction(multiply)">Test Multiply</button><button onclick="doAction(add)" >Test Add</button>Test Multiply Test Add
В этом небольшом фрагменте кода происходит очень многое. Вначале просто определяют две функции: multiply и add. Функция multiply просто перемножает все переданные ей числа. Аналогично, функция add складывает все переданные ей числа.
