Vivasoft-logo

3.7 নালিশ কোয়েলসিং অপারেটর

নালিশ কোলেসিং (??) অপারেটর হল একটি লজিক্যাল অপারেটর যেটি তার ডানদিকের অপারেন্ডটি  রিটার্ন করে যখন তার বাম দিকের অপারেন্ডটি undefined বা null থাকে এবং অন্যথায় তার বাম দিকের অপারেন্ডটি  রিটার্ন করে।

নালিশ কোলেসিং (??) অপারেটরের সিনট্যাক্স হল

				
					leftExpr ?? rightExpr;
				
			

এই অপারেটরটির ব্যাবহার একটি ছোট উদাহরণের মাধ্যমে দেখা যাক

				
					

const name = null ?? 'Sarkar';
console.log(name);
// output "Sarkar"


const age = 0 ?? 42;
console.log(age);
// output 0

				
			

নালিশ কোলেসিং অপারেটরটিকে লজিক্যাল OR (||) অপারেটরের একটি বিশেষ কেস হিসাবে দেখা যেতে পারে। (||) অপারেটরটি ডানদিকের অপারেন্ড রিটার্ন করে যদি বাম অপারেন্ডটি কোনো falsy মান হয়, শুধুমাত্র undefined বা null নয়। অন্য কথায়, যদি লজিক্যাল OR (||) অপারেটর ভেরিয়েবল name -তে কিছু ডিফল্ট মান প্রদান করতে ব্যবহার করা হয় এবং যদি কিছু falsy মান ব্যবহারযোগ্য হিসাবে বিবেচনা করা হয় তবে কিছু অপ্রত্যাশিত আচরণের সম্মুখীন হতে হবে(যেমন, ” বা 0)।

নালিশ কোলেসিং অপারেটরের পঞ্চম-সর্বনিম্ন অপারেটর অগ্রাধিকার রয়েছে,  (||) অপারেটর  এর চেয়ে সরাসরি কম এবং কন্ডিশনাল (টারনারি) অপারেটরের চেয়ে সরাসরি বেশি।

AND (&&) এবং OR অপারেটর (||) উভয়ের সাথে ?? একত্রে ব্যবহার  করা সম্ভব নয়। এই ক্ষেত্রে একটি সিনট্যাক্স এরর থ্রো করবে।

				
					null || undefined ?? "foo"; // Syntax Error
true && undefined ?? "foo"; // Syntax Error

				
			

এর পরিবর্তে, আমাদের প্রথম ব্র্যাকেটের ব্যবহার করতে হবে:

				
					

(null || undefined) ?? "foo"; // "foo" 
				
			

নালিশ কোয়েলসিং অপারেটরের কিছু উদাহরণ

(১) এখানে ডিফল্ট মান প্রদান করা হয়েছে যাতে undefined বা null বাদে অন্য সকল মান থাকবে।

				
					const nullValue = null;
const emptyText = ""; // falsy
const someNumber = 42;


const value1 = nullValue ?? "default for 1";
const value2 = emptyText ?? 'default for 2';
const value3 = someNumber ?? 0;


console.log(value1); // "default for 1"
console.log(value2); // ""
console.log(value3); // 42
				
			

(২) ভ্যারিয়েবলে  ডিফল্ট মান প্রদান করার জন্য পূর্বে OR(||) অপারেটর ব্যবহার করা হত, কিন্তু OR(||) অপারেটর যেহেতু যেকোনো falsy মান হলেই ডান অপারেন্ডটি রিটার্ন করে, তাই কিছু ক্ষেত্রে যদি falsy মান (“” বা 0) কে ডিফল্ট মান হিসেবে প্রদান করা যেতনা, যেটা নালিশ কোয়েলসিং অপারেটর ব্যবহার করা সম্ভব।

				
					const deafultText = ""; 


const textWithOR = deafultText || "Hello world";
console.log(textWithOR); // output: Hello world


const textWithNullishCoalescing = deafultText ?? 'Hi neighborhood';
console.log(textWithNullishCoalescing); // output: '' 
				
			

(৩) লজিক্যাল অপারেটরদের মতো, ডানদিকের এক্সপ্রেশনটি মূল্যায়ন করা হয় না যদি বাম অপারেন্ডটি  undefined বা null না হয়।

				
					function first() {
  console.log("First Function");
  return undefined;
}
function second() {
  console.log('Second Function');
  return false;
}
function third() {
  console.log('Third Function');
  return "foo";
}


console.log(first() ?? third());

				
			

উপরের উদাহরণটি লক্ষ্য করুন, এখানে প্রথমে “First ফাংশনটি কল করা হয়েছে।” তারপর “Third ফাংশনটি কল করা হয়েছে এবং সবশেষে “foo” প্রিন্ট হবে । যেহেতু first() undefined রিটার্ন করে তাই দুটো ফাংশনই মূল্যায়ন করা হবে।

				
					console.log(second() ?? third());
				
			

আর এক্ষেত্রে  প্রথমে “Second ফাংশনটি কল করা হয়েছে যা “false” প্রিন্ট হবে।  যেহেতু second() ফাংশনটি  false রিটার্ন করে (যা null or undefined নয়), তাই ডানদিকের এক্সপ্রেশনটি আর মূল্যায়ন করা হবে না।