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!
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