Arguments object

by 2 contributors:

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 (Да) (Да) (Да) (Да) (Да) (Да)

Смотрите также

Метки документа и участники

Contributors to this page: bychek.ru, fscholz
Обновлялась последний раз: bychek.ru,
Скрыть боковую панель