Obiekt arguments ECMAScript

obiekt arguments

W kodzie funkcji, używając specjalnego obiektu arguments, deweloperzyNie ma potrzeby wyraźnie podawać nazw argumentówi uzyskać do nich dostęp.

Na przykład, w funkcji sayHi(), pierwszy argument to message. Można również uzyskać do tej wartości dostęp za pomocą arguments[0], co oznacza wartość pierwszego argumentu (pierwszy argument znajduje się w pozycji 0, drugi argument w pozycji 1, itd.).

Z tego powodu, nie ma potrzeby wyraźnie oznaczać nazw argumentów, aby przedefiniować funkcję:

funkcja sayHi() {
  jeśli (arguments[0] == "bye") {
    return;
  }
  alert(arguments[0]);
}

Sprawdzanie liczby argumentów

Można również używać obiektu arguments do sprawdzania liczby argumentów przekazanych do funkcji, poprzez odniesienie do właściwości arguments.length.

Poniższy kod będzie wyświetlał liczbę argumentów użytych przy każdym wywołaniu funkcji:

function howManyArgs() {
  alert(arguments.length);
}
howManyArgs("string", 45);
howManyArgs();
howManyArgs(12);

Powyższy kod będzie wyświetlał po kolei "2", "0" i "1".

Komentarz:W przeciwieństwie do innych języków programowania, ECMAScript nie sprawdza, czy liczba przekazanych do funkcji argumentów jest równa liczbie argumentów zdefiniowanych w funkcji. Wszystkie funkcje zdefiniowane przez dewelopera mogą przyjąć dowolną liczbę argumentów (według dokumentacji Netscape, maksymalnie 255), bez wywoływania błędów. Wszystkie pominięte argumenty będą przekazywane jako undefined, a nadmiarowe argumenty będą ignorowane.

Symulacja overload funkcji

Używając obiektu arguments można określić liczbę przekazanych do funkcji argumentów, co pozwala na symulację overload funkcji:

function doAdd() {
  if(arguments.length == 1) {
    alert(arguments[0] + 5);
  } else if(arguments.length == 2) {
    alert(arguments[0] + arguments[1]);
  }
}
doAdd(10); // Wyświetla "15"
doAdd(40, 20); // Wyświetla "60"

Gdy ma jeden parametr, funkcja doAdd() dodaje 5 do parametru. Jeśli ma dwa parametry, dodaje je razem i zwraca sumę. Dlatego doAdd(10) wyświetla "15", a doAdd(40, 20) wyświetla "60".

Choć nie jest tak dobry jak overload, ale wystarczy, aby uniknąć tego rodzaju ograniczeń w ECMAScript.