JavaScript & ES6 - Rest Parametar


Šta je Rest Parametar?

ES6 uvodi parametre odmora (rest) koji nam omogućavaju da prenesemo proizvoljan broj parametara funkciji u obliku niza. Ovo je posebno korisno u situacijama kada želite prosljediti parametre funkciji, ali nemate pojma koliko će vam trebati. Parametar odmora (rest) specifikuje se dodavanjem prefiksa imenovanom parametru s operatorom rest (...), tj. tri točke. Parametar rest može biti samo posljednji na listi parametara, a može biti samo jedan parametar rest. Pogledajte sljedeći primjer da biste vidjeli kako to funkcioniše:

function sortNames(...names) {
    return names.sort();
}

alert(sortNames("Sarah", "Harry", "Peter")); // Harry,Peter,Sarah
alert(sortNames("Tony", "Ben", "Rick", "Jos")); // John,Jos,Rick,Tony
Pogledajmo kako koristiti primjer u praksi:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>JavaScript ES6 Rest Parametar</title>
</head>
<body>
    <script>
    function sortNames(...names) {
        return names.sort();
    }
    
    document.write(sortNames("Sarah", "Harry", "Peter")); // Harry,Peter,Sarah
    document.write("<br>");
    document.write(sortNames("Tony", "Ben", "Rick", "Jos")); // John,Jos,Rick,Tony
    </script>
</body>
</html>

Kada je parametar rest jedini parametar u funkciji, on dobija sve argumente prosljeđene funkciji, u suprotnom dobija ostatak argumenata koji premašuje broj imenovanih parametara.

function myFunction(a, b, ...args) {
    return args;
}

alert(myFunction(1, 2, 3, 4, 5)); // 3,4,5
alert(myFunction(-7, 5, 0, -2, 4.5, 1, 3)); // 0,-2,4.5,1,3
Pogledajmo kako koristiti primjer u praksi:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>JavaScript ES6 Nabavljanje dodatnih argumenta funkcije sa Rest Parametrom</title>
</head>
<body>
    <script>
    function myFunction(a, b, ...args) {
        return args;
    }
    
    document.write(myFunction(1, 2, 3, 4, 5)); // 3,4,5
    document.write("<br>");
    document.write(myFunction(-7, 5, 0, -2, 4.5, 1, 3)); // 0,-2,4.5,1,3
    </script>
</body>
</html>