Существует странная «волшебная» переменная, на которую вы можете ссылаться, называемая «аргументами»:
function manyArgs() {
for (var i = 0; i < arguments.length; ++i)
alert(arguments[i]);
}
Это подобно массиву, но это не массив.На самом деле это так странно, что вам вообще не стоит его использовать.Обычной практикой является получение значений в массиве real :
function foo() {
var args = Array.prototype.slice.call(arguments, 0);
// ...
В этом примере «args» будет обычным массивом без каких-либо странностей.Существуют всевозможные неприятные проблемы с «аргументами», и в ECMAScript 5 его функциональность будет ограничена.
edit - хотя использование функции .slice()
, безусловно, удобно, оказывается,то, что передача объекта arguments
из функции вызывает головную боль для оптимизации, настолько, что функции, которые делают это, могут вообще не оптимизироваться.Поэтому простой и простой способ превратить arguments
в массив - это
function foo() {
var args = [];
for (var i = 0; i < arguments.length; ++i) args[i] = arguments[i];
// ...
}
Подробнее о arguments
и оптимизации.