কম্পিউটার টিউটোরিয়াল

JavaScript-এ অনডিফাইন্ড (undefined) ভ্যালুতে সংখ্যা যোগ করলে NaN ফেরত দেয়

JavaScript-এ (MongoDB শেলেও) যদি কোনো ভেরিয়েবল undefined থাকে এবং সেটির সাথে সংখ্যা যোগ করা হয়, তবে ফলাফল হবে NaN (Not a Number)। এটি একটি スペシャル নামারিক ভ্যালু যা অমান্য গাণিতিক অপারেশনের ফলাফল বোঝায়।

কেস ১: সরাসরি undefined যোগ করা

> var result = 10 + undefined;
> print(result);

আউটপুট:

NaN

কেস ২: অনির্ধারিত (undeclared) ভেরিয়েবল যোগ করা

> var value;
> var value1 = 10;
> var result = value1 + value;
> result

আউটপুট:

NaN

value ডিক্লেয়ার করা হলেও মান অসাইন করা হয়নি, তাই সেটি undefined।

কেন NaN হয়?

  • JavaScript-এ undefined একটি প্রিমিটিভ ভ্যালু যা "মান অনুপস্থিত" বোঝায়।
  • গাণিতিক অপারেশন (+, -, *, /) undefined এর সাথে করলে JavaScript ইমপ্লিসিটলি undefined-কে NaN-এ কনভার্ট করে।
  • Number(undefined) === NaN।

NaN চেক করা

> isNaN(result)
true
> Number.isNaN(result)
true

Number.isNaN() ব্যবহার করা ভালো (গ্লোবাল isNaN() স্ট্রিংও কনভার্ট করে চেক করে, যা কনফিউশন তৈরি করতে পারে)।

প্রতিরোধ (Prevention)

  • ভেরিয়েবল ডিক্লেয়ার করার সাথে সাথেই ডিফল্ট মান দিন: var value = 0;।
  • অপারেশন করার আগে চেক করুন: if (value !== undefined) { ... }।
  • Number(value) || 0 প্যাটার্ন ব্যবহার করুন (0 বা ফলসি ভ্যালু হলে ০ ব্যবহার করবে)।
  • MongoDB Aggregation-এ $ifNull বা $cond ব্যবহার করুন।

মূল পয়েন্টসমূহ

  • undefined + number = NaN।
  • NaN হলো "Not a Number" — একমাত্র মান যা নিজের সাথে সমান নয় (NaN !== NaN)।
  • MongoDB শেল JavaScript ইঞ্জিন (V8/SpiderMonkey) ব্যবহার করে, তাই একই আচরণ।
  • এগরিগেশন পাইপলাইনে $add অপারেটর null বা মিসিং ফিল্ডকে ০ ধরে না, এরর দেয় বা null রিটার্ন করে — $ifNull ব্যবহার করুন।
  1. বিন্ডোজ ১০ সাপোর্ট শেষ হলে কী হবে?

  2. WhatsApp আনইনস্টল করলে কী হয়?

  3. স্কাইপ ল্যাগ সমাধান: মসৃণ কলের জন্য দ্রুত সমাধান

  4. আইফোনে নম্বর ব্লক করা: এটি কী করে এবং কীভাবে কাজ করে