Книга: Выразительный JavaScript
Объект arguments
Объект arguments
Когда вызывается функция, к окружению исполняемого тела функции добавляется особая переменная под названием arguments. Она указывает на объект, содержащий все аргументы, переданные функции. Помните, что в JavaScript вы можете передавать функции больше или меньше аргументов, чем объявлено при помощи параметров.
function noArguments() {}
noArguments(1, 2, 3); // Пойдёт
function threeArguments(a, b, c) {}
threeArguments(); // И так можно
У объекта arguments
есть свойство length
, которое содержит реальное количество переданных функции аргументов. Также у него есть свойства для каждого аргумента под именами 0, 1, 2 и т. д.
Если вам кажется, что это очень похоже на массив – вы правы. Это очень похоже на массив. К сожалению, у этого объекта нет методов типа slice
или indexOf
, что делает доступ к нему труднее.
function argumentCounter() {
console.log("Ты дал мне", arguments.length, "аргумента.");
}
argumentCounter("Дядя", "Стёпа", "Милиционер");
// ? Ты дал мне 3 аргумента.
Некоторые функции рассчитаны на любое количество аргументов, как console.log
. Они обычно проходят циклом по свойствам объекта arguments
. Это можно использовать для создания удобных интерфейсов. К примеру, вспомните, как мы создавали записи для журнала Жака:
addEntry(["работа", "тронул дерево", "пицца", "пробежка", "телевизор"], false);
Так как мы часто вызываем эту функцию, мы можем сделать альтернативу, которую проще вызывать:
function addEntry(squirrel) {
var entry = {events: [], squirrel: squirrel};
for (var i = 1; i < arguments.length; i++)
entry.events.push(arguments[i]);
journal.push(entry);
}
addEntry(true, "работа", "тронул дерево", "пицца", "пробежка", "телевизор");
Эта версия читает первый аргумент как обычно, а по остальным проходит в цикле (начиная с индекса 1, пропуская первый аргумент) и собирает их в массив.
- Optional arguments
- Объект WshUnnamed
- Объект WshArguments
- Объекты-коллекции
- Объект WScript
- Объект WshNamed
- Объект WshShortcut
- 4. Структуры данных: объекты и массивы
- 8.3.2. Списки аргументов переменной длины: объект Arguments
- 1.1. Введение в объектно-ориентированное программирование
- ЧАСТЬ IV. База данных и ее объекты.
- 1.1.1. Что такое объект