аргументы объект
В коде функции используются аргументы специального объекта, разработчики могут получить к ним доступ, не указывая на имена параметров.
Например, в функции sayshi () первым параметром является сообщение. Это значение также можно получить с помощью аргументов [0], то есть значения первого параметра (первый параметр находится в положении 0, второй параметр находится в положении 1 и т. Д.).
Следовательно, вы можете переопределить функцию без явного названия параметров:
Функция sayshi () {if (Arguments [0] == "bye") {return;} alert (аргументы [0]);}Количество параметров обнаружения
Вы также можете использовать объект аргументов для обнаружения количества параметров функции и обратиться к Articuments.length.
Следующий код выведет количество параметров, используемых для каждого вызова для функции:
функция Howmanyargs () {alert (arguments.length);} Howmanyargs ("String", 45); Howmanyargs (); Howmanyargs (12);Приведенный выше код будет отображать «2», «0» и «1» по очереди.
ПРИМЕЧАНИЕ. В отличие от других языков программирования, ECMASCRICT не проверяет, что количество параметров, передаваемых функции, равно количеству параметров, определенных функцией. Функции, определенные разработчиками, могут принять любое количество параметров (в соответствии с документацией Netscape, до 255), не бросая никаких ошибок. Любые недостающие параметры будут переданы функции как неопределенная, а избыточные функции будут игнорироваться.
Имитировать перегрузку функции
Используйте объект аргументов, чтобы определить количество параметров, передаваемых функции, а затем имитировать перегрузку функции:
Функция doAdd () {if (arguments.length == 1) {alert (Arguments [0] + 5);} else if (arguments.length == 2) {alert (аргументы [0] + аргументы [1]);}}doAdd (10); // Вывод "15"
DOADD (40, 20); // Вывод "60"
Когда есть только один параметр, функция doAdd () добавляет 5 к параметру. Если есть два параметра, два параметра добавляются, чтобы вернуть их сумму. Итак, DoAdd (10) выходов "15", в то время как DoAdd (40, 20) выходы "60".
Хотя это и не так хорошо, как перегрузка, этого достаточно, чтобы избежать этого ограничения Ecmascript.