Jaki jest poprawny sposób zdefiniowania wyrażenia funkcji generatora w JavaScript?

Funkcje generatora w JavaScript są potężnym narzędziem, które pozwala funkcjom zwracać (“yield”) serię wartości na żądanie, co umożliwia tworzenie łatwych do zarządzania sekwencji oraz efektywne przetwarzanie danych bez konieczności ładowania wszystkich wartości do pamięci jednocześnie. W tej lekcji przyjrzymy się, jak poprawnie zdefiniować i używać wyrażeń funkcji generatora w JavaScript, zilustrowane przykładem kodu wplecionym w prosty dokument HTML.

Definicja funkcji generatora

Funkcje generatora w JavaScript definiuje się za pomocą specjalnego symbolu gwiazdki (*) umieszczonego między słowem kluczowym function a nazwą funkcji. Generator może przekazywać wartości za pomocą instrukcji yield i jest kontynuowany od miejsca, w którym został ostatnio wstrzymany, co pozwala na tworzenie skomplikowanych sekwencji wykonania w prosty i czytelny sposób.

Przykład kodu

Poniższy przykład ilustruje użycie funkcji generatora w JavaScript, który generuje ciąg Fibonacciego, wpleciony w prosty dokument HTML.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Funkcja generatora w JavaScript</title>
</head>
<body>
    <script>
        // Definicja funkcji generatora generującej ciąg Fibonacciego
        function* generateFibonacci() {
            let [prev, curr] = [0, 1];
            while (true) {
                [prev, curr] = [curr, prev + curr];
                yield curr;
            }
        }

        // Użycie funkcji generatora
        const sequence = generateFibonacci();
        console.log(sequence.next().value); // 1
        console.log(sequence.next().value); // 1
        console.log(sequence.next().value); // 2
        console.log(sequence.next().value); // 3
        console.log(sequence.next().value); // 5
        // I tak dalej...
    </script>
</body>
</html>

W powyższym przykładzie, funkcja generateFibonacci jest funkcją generatora, która w nieskończoność generuje kolejne liczby ciągu Fibonacciego. Użycie yield pozwala na pauzowanie funkcji i zwrócenie obecnej wartości curr bez zakończenia całej funkcji. Dzięki temu możemy “pytać” generator o kolejne liczby ciągu na bieżąco, bez potrzeby generowania ich wszystkich na raz.

Podsumowanie

Funkcje generatora w JavaScript oferują potężne możliwości do tworzenia efektywnych, łatwych w zarządzaniu sekwencji danych, które mogą być generowane i przetwarzane na żądanie. Poprzez umiejętne wykorzystanie słowa kluczowego yield, programiści mogą kontrolować wykonanie funkcji generatora, co otwiera drzwi do tworzenia bardziej złożonych i wydajnych aplikacji. Przykład z ciągiem Fibonacciego pokazuje, jak łatwo można implementować i używać funkcji generatorów w praktycznych zastosowaniach.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video JavaScript w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top