Argumenty funkcji
W JavaScript funkcje są elastyczne, co oznacza, że mogą przyjmować różną liczbę parametrów. Rozważmy prosty przykład:
function addNumbers(a, b) {
return a + b;
} W powyższym kodzie, a i b są parametrami funkcji addNumbers. Parametry te służą jako zmienne, które przechowują wartości przekazane do funkcji podczas jej wywołania. Ale co się stanie, jeśli wywołamy addNumbers(10) z tylko jednym argumentem? JavaScript pozwala na to, ale b otrzyma domyślną wartość undefined, co może prowadzić do nieoczekiwanych wyników.
Domyślne parametry i rest parameters
JavaScript ES6 wprowadza interesującą funkcję - domyślne parametry. Pozwalają one funkcjom mieć predefiniowane wartości, które są używane, gdy argument nie jest dostarczony podczas wywołania.
function greet(name = 'Gość') {
return `Witaj, ${name}!`;
}
console.log(greet()); // "Witaj, Gość!"
console.log(greet('Anna')); // "Witaj, Anna!" Dzięki domyślnym parametrom unikamy problemu niezdefiniowanych wartości i czynimy nasze funkcje bardziej elastycznymi i odpornymi na błędy.
Rest parameters, z drugiej strony, pozwalają funkcji akceptować dowolną liczbę argumentów jako tablicę. Jest to szczególnie przydatne, gdy nie wiesz, ile argumentów może zostać przekazanych.
function sumAll(...numbers) {
return numbers.reduce((acc, number) => acc + number, 0); // numbers będzie tutaj tablicą zawierającą wszystkie przekazane argumenty
}
console.log(sumAll(1, 2, 3)); // 6 Obiekt arguments
Przed wprowadzeniem ES6, JavaScript używał obiektu arguments do dostępu do wszystkich argumentów przekazanych do funkcji. Jest to podobne do rest parameters, ale z kilkoma kluczowymi różnicami. arguments jest obiektem podobnym do tablicy, ale nie tablicą. Można na nim wykonywać operacje tablicowe, ale najpierw trzeba go przekształcić w tablicę.
function showArguments() {
const argsArray = Array.from(arguments);
console.log(argsArray);
}
showArguments(1, 2, 3); // [1, 2, 3] Podczas gdy arguments jest nadal używany w starszym kodzie, zaleca się używanie rest parameters w nowych projektach ze względu na ich większą czytelność i elastyczność.