This translation is incomplete. Please help translate this article from English.
arguments объект, содержащий аргументы переданные в функцию.
Синтаксис
arguments
Описание
arguments локальный объект, доступный в каждой функции; arguments также свойство Function, которое не рекомендуется к использованию.
Вы можете ссылаться на аргументы функции внутри её, используя объект arguments. Он состоит из переданных в функцию аргументов, индекс первого элемента 0. Например, если в функцию пришло 3 аргумента, вы можете сослаться на аргументы следующим образом:
arguments[0] arguments[1] arguments[2]
Аргументы могут быть установлены:
arguments[1] = 'new value';
Объект arguments это не Array. Он похож на массив, но не имеет никаких его свойств кроме length. Например, у него нет pop метода. Однако, он может быть конвертирован в обычный массив:
var args = Array.prototype.slice.call(arguments);
Вам не следует этого делать, посколько это предотвращает оптимизации в JavaScript движках (например, V8). Вместо этого, попробуйте построить новый массив arguments.
Если Array generics доступны, можно использовать следующее:
var args = Array.slice(arguments);
Объект arguments доступен только в теле функции. Пытаясь получить доступ к arguments вне функции, конструкция вернет ошибку.
Вы можете использовать arguments, если вы вызываете функцию с большим количеством аргументов, чем было задано. Эта техника применяется для функций с переменным количеством аргументов. Чтобы использовать строгое число аргументов используйте arguments.length, а затем обрабатывайте каждый аргумент через arguments.(Чтобы фиксировать количество аргументов при определении функции используйте свойтво Function.length.)
Свойства
arguments.callee- Текущая выполняющееся функция.
arguments.caller- Функцию, вызвавшая текущую функцию.
arguments.length- Количество переданных аргументов.
Примеры
Создание функции, соединяющей несколько строк
Пример определяет функцию, соединяющую несколько строк. Первый аргумент символ, вставляемый между частями строки:
function myConcat(separator) {
var args = Array.prototype.slice.call(arguments, 1);
return args.join(separator);
}
Вы можете передать любое количество аргументов в эту функцию. Она создает строку, используя каждый аргумент:
// возвращает "red, orange, blue"
myConcat(", ", "red", "orange", "blue");
// получает "elephant; giraffe; lion; cheetah"
myConcat("; ", "elephant", "giraffe", "lion", "cheetah");
// выводит "sage. basil. oregano. pepper. parsley"
myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley");
Функция, создающая HTML списки
Пример создает функцию, которая создает HTML строку списка. Первый аргумент строка, определяющая вид списка, при "u" список точечный, а при "o" - нумерованный:
function list(type) {
var result = "<" + type + "l><li>";
var args = Array.prototype.slice.call(arguments, 1);
result += args.join("</li><li>");
result += "</li></" + type + "l>"; // end list
return result;
}
Вы можете использовать любое количество аргументов, а функция добавит каждый элемент в список, заданного первым аргументом типа. Например:
var listHTML = list("u", "One", "Two", "Three");
/* listHTML:
"<ul><li>One</li><li>Two</li><li>Three</li></ul>"
*/
Спецификации
| Specification | Status | Comment |
|---|---|---|
| ECMAScript 1st Edition. | Standard | Initial definition. Implemented in JavaScript 1.1 |
| ECMAScript 5.1 (ECMA-262) Определение 'Arguments Object' в этой спецификации. |
Стандарт | |
| ECMAScript 6 (ECMA-262) Определение 'Arguments Exotic Objects' в этой спецификации. |
Кандидат в рекомендации |
Поддержка браузерами
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Basic support | (Да) | (Да) | (Да) | (Да) | (Да) |
| Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Basic support | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) |