# Function Composition In Bengali JavaScript Series ⇾ Chapter Nine (Part -3)

এই পর্বে আমরা জানব ফাঙ্কশন কম্পোসিশন সম্পর্কে ।কম্পোসিশন সাধারণত ২ ধরণের হয়ে থাকে একটা হচ্ছে অবজেক্ট ওরিয়েন্টেড টার্মস অনুযায়ী কম্পোসিশন আর অন্যটা হচ্ছে ফাঙ্কশন কম্পোসিশন ।

আমরা এর আগেও ফাঙ্কশন কম্পোসিশন করেছি যেমন ধর console.log এর মধ্যে আমরা অনেক ফাঙ্কশন কল করেছি এই যে একটা ফাঙ্কশন এর মধ্যে ইন রেজাল্ট ইনপুট আকারে ফাঙ্কশন প্রোভাইড করেছিলাম এইটাই মূলত ফাঙ্কশন কম্পোসিশন ।আমরা যদি আরো সহজ করে বলতে চাই তাহলে সংজ্ঞা টা দাঁড়ায় : প্রথম ফাঙ্কশন এর ইনপুট আকারে দ্বিতীয় ফাঙ্কশন এর আউটপুট দেওয়া যায় তখন সেটাকে আমরা ফাঙ্কশন কম্পোসিশন বলব ।

আমরা একটা উধারণের মাধ্যমে বুঝার চেষ্টা করতে পারি :

```javascript
function print(inp){
    console.log(inp)
}

function multiplyByFive(n){
    return n * 5
}

function add(a,b){
    return a + b
}

print(multiplyByFive(add(3,6)))
```

আমাদের কাছে তিনটা ফাঙ্কশন আছে print,multiplyByFive এবং add । এখন print ফাঙ্কশন এর কাজ হচ্ছে আর্গুমেন্ট এ যে ইনপুট পাবে তা কনসোল লগ করা । multiplyByFive এর কাজ হচ্ছে আর্গুমেন্ট এ যে ভ্যালু পাবে সেটাকে ৫ দিয়ে গুন্ করা ও রিটার্ন করা । এবং add ফাঙ্কশন এর কাজ হচ্ছে আর্গুমেন্ট এ যে ভ্যালু পাবে তাকে যোগ করা ও রিটার্ন করা ।

তাহলে এবার আমরা কোড এর মধ্যে `print(multiplyByFive(add(3,6)))` যেখানে ফাঙ্কশন কল করেছি সেটাকে ভেঙে ফেলি দেখি শর্ত মত হয় কিনা ?

শর্তটা বা সঙ্গে তা ছিল প্রথম ফাঙ্কশন এর ইনপুট এ দ্বিতীয়ও ফাঙ্কশন এর আউটপুট দিতে হবে ।

তাহলে আমরা প্রথম ফাঙ্কশন print কল করলাম এবং তার ইনপুট বা পেরামিটার আকারে দ্বিতীয় ফাঙ্কশন দিলাম ।যেহেতু দ্বিতীয় ফাঙ্কশন একটা নম্বর রিটার্ন করছে তাই পেরামিটার আউটপুট একটা সংখ্যাই পাচ্ছে ।আমাদের শর্ট মিলে গেছে ।এবারে `multiplyByFive` এর পেরামিটার n আছে আর n যেহেতু সংখ্যা চাচ্ছে তাই add ফাঙ্কশন কল করব এবং পেরামিটার দিব যা ৩,৬।

finally আমাদের আউটপুট আসবে ৪৫ ।

**আউটপুট দেখার জন্য:**

```javascript
Desktop/deep_dive_js/chapterNine$ node composition.js 
45
```

তাহলে একটা ফাঙ্কশন এর ইনপুট আকারে যদি আর একটা ফাঙ্কশন এর আউটপুট প্রবেশকরাতে পারি, তাহলে এই ছোট্ট কথাটাকেই আমরা ফাঙ্কশন কম্পোসিশন বলব ।

আমরা ফাঙ্কশনাল জাভাস্ক্রিপ্ট চ্যাপ্টার এই ব্লগ এর মাধ্যমে শেষ করছি ।

ফাঙ্কশনাল জাভাস্ক্রিপ্ট এর কোর যে কনসেপ্ট গুলি রয়েছে তা ইতিমধ্যে আমরা জেনে গিয়াছি ।

পরবর্তী আর্টিকেল থেকে আমরা ক্লোজার ,হোস্টিং ,জাভাস্ক্রিপ্ট কিভাবে বিহাইন্ড দ্যা সিন্ কাজ করে সে সব সম্পর্কে জানব ।
