Modest Programmer logo
18 września 2018
Tagi: JavaScript
Dzisiaj kilka słów o obiekcie arguments w języku JavaScript. Obiekt arguments może okazać się bardzo przydatny w niektórych sytuacjach, ale zanim przejdziemy do konkretów zobaczmy w jaki sposób przekazywane są do funkcji argumenty.
function sum(a, b) {
    return a + b;
}
Przeanalizujmy teraz wywołania z różnymi argumentami:
console.log(sum(1, 2)); //3
console.log(sum(4, 5)); //9
Tutaj chyba nie trzeba dużo tłumaczyć :) Przekazujemy 2 wartości typu number, które są dodawane i zwracana jest suma.
console.log(sum(1)); //Nan
Tutaj już coś bardziej ciekawego. Gdy podaliśmy tylko 1 argument, 2 stał się undefined. Został zwrócony Nan, czyli "Not a number", ponieważ ciężko dodać 1 do undefined.
console.log(sum('1', '2')); //12
W powyższym przykładzie zostały przekazane 2 wartości typu string dlatego zwrócone zostało 12, ponieważ dodawane stringi łączą się ze sobą. Czyli tak jakbyśmy dokleili do '1' wartość '2'.
console.log(sum('1')); //1undefined
W tym przypadku 1 typu string + undefined zwróci "1undefined", ponieważ tak jak wspomniałem wcześniej podczas dodawania stringi łączą się ze sobą.
console.log(sum()); //Nan
Gdy nie został przekazany żaden argument, oba stały się undefined, a co za tym idzie zwrócony został ponownie Nan.
console.log(sum(1, 2, 3)); //3
Gdy przekazaliśmy więcej argumentów niż to było wymagane, to do funkcji faktycznie zostały przekazane tylko 2, czyli tyle ile było w parametrach funkcji.

A co jeśli nie wiesz ile argumentów zostanie przekazanych do funkcji, a chcesz użyć wszystkich? Można to zrobić za pomocą tytułowego obiektu arguments.
function sum() {
    let sum = 0;

    for (let argument of arguments)
        sum += argument;

    return sum;
}
console.log(sum(1)); //1
console.log(sum(1, 2)); //3
console.log(sum(1, 2, 3)); //6
console.log(sum(9, 10, 1, 21, 54, 21, 1)); //117
Jak widzisz niezależnie od tego ile argumentów zostanie przekazanych wszystkie zostaną zsumowane. Wystarczy iterować się po obiekcie arguments, aby dostać się do każdego z nich.
function sum() {
    let num = 0;
    arguments[0] = 100;

    if(arguments.length > 0)
        num = arguments[1];

    return num;
}
console.log(sum(1, 2)); //2
Równie dobrze możesz odwoływać się do obiektu arguments poprzez wartości indeksów, za pomocą właściwości length możesz sprawdzić ile argumentów zostało przekazanych. Możesz przypisywać nowe wartości oraz pobierać wszystkie wartości argumentów.

To wszystko co chciałem Ci przekazać w tym artykule. Zapraszam Cię do kolejnych artykułów z serii podstaw programowania w języku JavaScript.

Poprzedni artykuł - This w JavaScript.
Następny artykuł - Parametry domyślne w JavaScript.
Autor artykułu:
Kazimierz Szpin
Kazimierz Szpin
Programista. Specjalizuje się w C#, głównie WPF, Windows Forms oraz ASP.NET MVC.
Autor bloga ModestProgrammer.pl
Dodaj komentarz
© Copyright 2018 modestprogrammer.pl. Wszelkie prawa zastrzeżone Design by Kazimierz Szpin