Введите ваш адрес почты


sdcvoy.ru
Понравился сайт? Поделись с друзьями!
Главная » Javascript » Arguments-v-javascript

arguments в JavaScript

Доступ к значениям элементов, которых нет в функции в JavaScript осуществляется через псевдомассив arguments. Выглядит это примерно так:

function sum(a,b) {
  arguments[1]=7;
  alert( a + b ); 
}
sum(2,3); // выведет 9

В этом примере вы можете видеть привязку аргументов с параметрами функции (в данном случае не имеет значения что мы введём в последней строчке кода), но если вы будете использовать строгий режим, то результат будет совсем другим:

function sum(a,b) {
  "use strict"; // строгий режим
  arguments[1]=7;
  alert( a + b ); 
}
sum(2,3); // выведет 5

arguments в javascriptДело в том, что при строгом режиме arguments отделены от локальных переменных. Интересным фактом остаётся то что arguments не является массивом, но у него есть длина length. Запомните, что других свойств и методов, кроме length у arguments нет. Но мы всегда можем создать массив из arguments:

var args = []; // создаём пустой массив
for (var i = 0; i < arguments.length; i++) {
  args[i] = arguments[i]; // создаём новый массив из arguments
}

Бывают случаи, когда в функции вызывают меньше аргументов, чем заявлено на самом деле. Если не вызвать заявленные аргументы, то у них по умолчанию значение undefined. Но это легко исправить, можно выставить значения аргументов «по умолчанию» через символ ||:

var a,b,c;
function volume(a,b,c) {
 c=c||10; // если мы не введём значение "c", то оно по умолчанию будет равным 10
 var Vol=a*b*c;
 alert(Vol);
}
volume(2,3); // выведет 60 

В данном примере я вычислил объём прямоугольного параллелепипеда, не указав при этом значение «c».


Ещё хотелось добавить, что в старом коде вы можете встречать такие свойства, как arguments.callee и arguments.callee.caller, но их я рассматривать не буду, так как они устарели, но если вы вдруг их встретите, то в интернете полно информации как с ними работать. Вместо них рекомендуется использовать NFE.



наверх