JavaScript - Operator Yield

Pendahuluan Operator Yield

Hai, para pemula pemrogram! Hari ini, kita akan memulai perjalanan menarik ke dunia operator yield di JavaScript. Berpikirlah tentang yield sebagai tombol pause magis untuk kode Anda. Itu seperti mengatakan ke program Anda, "Hey, istirahat disini, dan mari kita melanjutkan di kemudian hari." Menarik, kan? Ayo masuk!

JavaScript - Yield Operator

Apa Itu Operator Yield?

Operator yield adalah kata kunci khusus di JavaScript yang digunakan dalam fungsi generator. Saya tahu apa yang Anda pikirkan - "Fungsi generator? Apa itu itu?" Jangan khawatir, kita akan ke sana! Untuk saat ini, hanya bayangkan fungsi generator sebagai jenis fungsi khusus yang dapat pause dan melanjutkan eksekusinya. Operator yield adalah yang membuat pause dan melanjutkan ini dimungkinkan.

Analogi Dunia Nyata

Bayangkan Anda membaca buku yang sangat panjang. Anda mungkin akan menggunakan bookmark untuk menyimpan posisi Anda saat Anda perlu istirahat. Operator yield seperti bookmark itu di kode Anda. Itu menandai tempat di mana fungsi dapat pause, dan kemudian kembali kemudian.

Sintaks Operator Yield

Sintaks dasar operator yield sangat sederhana:

yield ekspresi;

Di sini, ekspresi adalah nilai yang Anda ingin "yield" atau kembalikan saat fungsi pause. Ini opsional, dan jika Anda tidak menyediakan satu, undefined akan diyieldkan sebagai ganti.

Operator Yield dalam Fungsi Generator

Sekarang, mari bicarakan tentang fungsi generator yang mistik ini. Fungsi generator didefinisikan menggunakan tanda bintang (*) setelah kata kunci function:

function* generatorFunction() {
yield 'Hello';
yield 'World';
}

Saat Anda memanggil fungsi generator, itu tidak menjalankan kode di dalamnya segera. Sebaliknya, itu mengembalikan objek generator yang Anda dapat gunakan untuk mengontrol eksekusi fungsi.

Contoh: Mengembalikan Nilai

mari lihat contoh sederhana:

function* countToThree() {
yield 1;
yield 2;
yield 3;
}

const generator = countToThree();
console.log(generator.next().value); // Output: 1
console.log(generator.next().value); // Output: 2
console.log(generator.next().value); // Output: 3

Dalam contoh ini, setiap kali kita memanggil next() pada generator kita, itu menjalankan hingga mencapai pernyataan yield, kemudian pause dan mengembalikan nilai yang diyield. Itu seperti fungsi mengatakan, "Ini adalah nomor berikutnya, panggil saya lagi untuk nomor berikutnya!"

Contoh: Mengembalikan Undefined

Jika kita tidak menentukan nilai untuk diyield, itu akan mengembalikan undefined:

function* yieldUndefined() {
yield;
yield 'Hello';
yield;
}

const gen = yieldUndefined();
console.log(gen.next().value); // Output: undefined
console.log(gen.next().value); // Output: Hello
console.log(gen.next().value); // Output: undefined

Ini dapat berguna saat Anda ingin membuat titik pause di generator tanpa mengembalikan nilai tertentu.

Contoh: Menyampaikan Nilai ke Metode next()

Ini adalah tempat hal-hal menjadi sangat menarik. Anda dapat benar-benar menyampaikan nilai ke metode next(), dan nilai ini akan diterima oleh fungsi generator:

function* conversation() {
const name = yield "What's your name?";
yield `Hello, ${name}!`;
const hobby = yield "What's your favorite hobby?";
yield `${hobby} sounds fun!`;
}

const talk = conversation();
console.log(talk.next().value);        // Output: What's your name?
console.log(talk.next('Alice').value); // Output: Hello, Alice!
console.log(talk.next().value);        // Output: What's your favorite hobby?
console.log(talk.next('Coding').value); // Output: Coding sounds fun!

Ini seperti berbicara dengan kode Anda. Generator bertanya, pause untuk menunggu jawaban Anda, kemudian melanjutkan berdasarkan apa yang Anda katakan. Sangat keren, kan?

Contoh Praktis: Generator Urutan Fibonacci

Marilah kita gabungkan semua pengetahuan ini dengan contoh praktis. Kita akan membuat fungsi generator yang menghasilkan urutan Fibonacci:

function* fibonacciGenerator() {
let a = 0, b = 1;
while (true) {
yield a;
[a, b] = [b, a + b];
}
}

const fib = fibonacciGenerator();
for (let i = 0; i < 10; i++) {
console.log(fib.next().value);
}

Generator ini akan terus menghasilkan bilangan Fibonacci secara tak terbatas. Setiap kali kita memanggil next(), itu mengyield nilai berikutnya dalam urutan. Kita menggunakan for loop di sini untuk mendapatkan 10 nomor pertama, tapi kita dapat terus melanjutkan selama kita ingin!

Kesimpulan

Operator yield adalah alat kuat di JavaScript yang membuka kemungkinan baru untuk mengontrol alur kode Anda. Itu memungkinkan Anda membuat fungsi yang dapat pause dan melanjutkan, membuatnya mudah bekerja dengan urutan nilai dalam waktu.

Ingat, belajar untuk menggunakan yield dan generator secara efektif memerlukan latihan. Jangan kecewa jika itu tidak langsung berjalan - terus mencoba dan Anda akan segera menjadi ahli!

Tabel Metode

Berikut adalah tabel metode utama yang digunakan dengan generator:

Metode Deskripsi
next() Mengembalikan nilai berikutnya dalam generator
return(value) Mengembalikan nilai yang diberikan dan mengakhiri generator
throw(error) Melempar kesalahan ke dalam generator

Selamat pemrograman, para ahli JavaScript masa depan! Ingat, setiap ahli pernah menjadi pemula. Terus berlatih, tetap curiga, dan sebelum Anda tahu, Anda akan menuju keunggulan pemrograman Anda sendiri!

Credits: Image by storyset