জাভাস্ক্রিপ্টে সকল Pure ফাংশনই ফাংশন কিন্তু সকল ফাংশনই Pure ফাংশন নয়। তাহলে Pure ফাংশন আসলে কি? আসলে Pure ফাংশন হল একটি Deterministic ফাংশন যার মানে হল যদি ওই ফাংশনে একই ইনপুটের জন্য সর্বদা একই আউটপুট থাকবে। একটি Pure ফাংশনের অবশ্যই নিচের বৈশিষ্ট্যগুলো থাকতে হবে।
- সর্বদা নিজের আর্গুমেন্টের উপর নির্ভর করবে।
- ফাংশনটি নিজের Scope এর বাইরে কোন ভারিয়েবলের মান পরিবর্তন করবে না।
- ফাংশনটি কোন side effects তৈরি করবে না।
let val1 = 6; let val2 = 4; function pure() { return val1 * val2; } pure();
function pure() { let val1 = 6; let val2 = 4; return val1 * val2; } pure();
function pure(arg) { let val = 100; return val * arg; } pure(2);
উপরের কোডটি সম্পূর্ণ একটি পিওর ফাংশন। কারণ এইখানে ফাংশনটি তার আর্গুমেন্ট এবং ফাংশন Scoop এর মধ্যে ভারিয়েবল val এর উপর নির্ভরশীল।
const impureAssoc = (key, value, object) => { object[key] = value; }; const person = { name:'Bobo', }; const result = impureAssoc('shoeSize', 400, person); console.log({ person, result, });
বলুন তো এখানে impureAssoc ফাংশনটি পিওর কিনা? একটু চিন্তা করুন।
const pureAssoc = (key, value, object) => ({ ...object, [key]:value, }); const person = { name:'Bobo', }; const result = pureAssoc('shoeSize', 400, person); console.log({ person, result, });
এখন person object টি শুধুমাত্র ফাংশনটির ভিতর পরিবর্তন হবে যার কোন Effect ফাংশনটির বাহিরে পরবে না।