JavaScript - Operator Yield

Pengenalan kepada Operator Yield

Hai, para pemrogram yang sedang berkembang! Hari ini, kita akan memulai perjalanan menarik ke dunia operator yield di JavaScript. P想象一下 yield sebagai tombol pause yang magical untuk kode Anda. Itu seperti mengatakan ke program Anda, "Hey, istirahat di sini, dan mari kita melanjutkan di tempat yang kita tinggalkan nanti." Menarik, kan? Ayo masuk ke dalam!

JavaScript - Yield Operator

Apa Itu Operator Yield?

Operator yield adalah kata kunci khusus di JavaScript yang digunakan di 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 khusus fungsi yang dapat pause dan melanjutkan eksekusinya. Operator yield adalah yang membuat pause dan melanjutkan ini dimungkinkan.

Anologi Dalam Dunia Nyata

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

Sintaks Operator Yield

Sintaks dasar operator yield cukup sederhana:

yield ekspresi;

Di sini, ekspresi adalah nilai yang Anda ingin "yield" atau kembalikan saat fungsi pause. Ini opsional, dan jika Anda tidak menyediakan salah satunya, 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';
}

Ketika 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 akan menjalankan hingga mencapai pernyataan yield, lalu pause dan mengembalikan nilai yang diyieldkan. 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 harus mengembalikan nilai.

Contoh: Menyampaikan Nilai ke Metode next()

Di sini hal-hal menjadi sangat menarik. Anda bisa 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 melakukan percakapan dengan kode Anda. Generator bertanya, pause untuk menunggu jawaban Anda, lalu melanjutkan berdasarkan apa yang Anda katakan. Sangat keren, kan?

Contoh Praktis: Generator Urutan Fibonacci

Ayo 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 bilangan pertama, tapi kita bisa terus melanjutkan selama kita mau!

Kesimpulan

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

Ingat, belajar untuk menggunakan yield dan generator secara efektif memerlukan latihan. Jangan frustasi 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 coding, para ahli JavaScript masa depan! Ingat, setiap ahli pernah menjadi pemula. Terus berlatih, tetap curiga, dan sebelum Anda sadari, Anda akan menuju keunggulan dalam pemrograman!

Credits: Image by storyset