> For the complete documentation index, see [llms.txt](https://nipu.gitbook.io/coding-js/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://nipu.gitbook.io/coding-js/14-function/generator-function.md).

# জেনারেটর ফাংশন (Generator Function)

জেনারেটর ফাংশন আমার মনে আমাদের দেশে প্রোগ্রামারা সব ছেয়ে কম ব্যাবহার করে থাকেন। এর মূল কারণ হলো আসলে অনেক ডেপেলপার বুঝতে পারে না আসলে এইটার বাস্তবিক জীবনে ব্যাবহার কোন জায়গায় করবে আর কিভাবে করবে। আর একজন ডেপেলপার যখন বুঝতে পারবে জেনেরেটর ফাংশনের বাস্তবিক ব্যাবহার তখন এর প্রেমে পরে যাবে।&#x20;

#### প্রথমে জেনে নেই জেনেরেটর ফাংশন কি?

আমারা জানি আমাদের রেগুলার যে ফাংশন আছে সেইটা আমাদের একটা ভ্যালু রিটার্ন করে বার কোন কিছু রিটার্ন করে না কিন্তু জেনারেটর ফাংশন সেক্ষেত্রে একের অধিক ভ্যালু রিটার্ন করে। এবং সেগুলোকে একের পর এক কল করার সুবিধা দেয় । জেনারেটর ফাংশন  আমারদের যে অবজেক্ট রিটার্ন  করে থাকে  বলা হয় জেনারেটর  অবজেক্ট  । মূলত জেনারেটর ফাংশন হচ্ছে একটা ইটারেটর। ইটারেটর কি এবং কিভাবে কায করে সেইটা নিয়ে আমি আমার পুনরাবৃত্তি অধ্যায়ে লিখেছি আশা করি আপনি সেটা শেষ করেই এই অধ্যায়ে এসেছেন। আর যদি না পরে আসেন সেইটা পরে আসুন।&#x20;

জেনারেটর ফাংশন লিখার নিয়মঃ-&#x20;

{% hint style="info" %}
১। জেনারেটর ফাংশন লিখার জন্য function কীওয়ার্ডের পরে একটা \* (an asterisk) চিহ্ন ব্যাবহার করতে হবে।

২। ভিতরের প্রতিটা statement এর জন্য yield  কীওয়ার্ড ব্যাবহার করা লাগবে।

৩। অবশ্যই ফাংশনটা রেগুলার ফাংশন হতে হবে কারণ ওয়অ্যারো ফাংশনে  জেনারেটর ফাংশন কাজ করবে না।&#x20;
{% endhint %}

Syntax:

```javascript
function* name(param0) {
  statements
}
function* name(param0, param1) {
  statements
}
function* name(param0, param1, /* … ,*/ paramN) {
  statements
}
```
