মূল বিষয়ে যান
WebGuideBD AI Academy

Variables, Values ও Types

30 মিনিট · আবশ্যক

  • const ও let দিয়ে variable ঘোষণা করতে পারবেন এবং কখন কোনটি তা বলতে পারবেন
  • number, string, boolean, undefined, null চিনতে ও typeof দিয়ে যাচাই করতে পারবেন
  • string-number মিশ্রণের বাগ খুঁজে Number() দিয়ে ঠিক করতে পারবেন

সমস্যাটা কী?

চেকআউট পেজে পণ্যের দাম ৮০০ আর ডেলিভারি ১৫০। কোড লিখল মোট = দাম + ডেলিভারি, আর স্ক্রিনে এলো ৮০০১৫০! গ্রাহক ভয় পেয়ে চলে গেলেন। কম্পিউটার যোগ না করে পাশাপাশি জুড়ে দিল কেন?

শেখার লক্ষ্য

  • const ও let দিয়ে variable ঘোষণা করতে পারবেন এবং কখন কোনটি তা বলতে পারবেন
  • number, string, boolean, undefined, null চিনতে ও typeof দিয়ে যাচাই করতে পারবেন
  • string-number মিশ্রণের বাগ খুঁজে Number() দিয়ে ঠিক করতে পারবেন

আনুমানিক সময়: 30 মিনিট

পূর্বশর্ত

ব্যাখ্যা

মান (value) হলো ডেটার একটি টুকরো: 800, "শার্ট", true। ভেরিয়েবল (variable) হলো সেই মানের নাম, যাতে পরে ব্যবহার করা যায়।

const price = 800;      // const: পরে আর বদলানো যাবে না
let quantity = 1;       // let: পরে বদলানো যাবে
quantity = 2;           // ঠিক আছে
// price = 900;         // এটি করলে TypeError হবে

নিয়ম: ডিফল্ট হিসেবে const ব্যবহার করুন; শুধু যখন মান সত্যিই বদলাবে তখন let। (পুরনো কোডে var দেখবেন—এর স্কোপ-নিয়ম বিভ্রান্তিকর, তাই এই কোর্সে ব্যবহার করব না।)

মৌলিক টাইপ
টাইপউদাহরণকখন
number800, 0.5, -3দাম, পরিমাণ, স্কোর—পূর্ণ ও দশমিক দুটোই একই টাইপ
string"শার্ট", 'ঢাকা'লেখা; কোটেশনের ভেতরে
booleantrue, falseহ্যাঁ/না সিদ্ধান্ত
undefinedundefinedমান এখনও দেওয়া হয়নি
nullnullইচ্ছাকৃতভাবে “কোনো মান নেই”

typeof অপারেটর কোনো মানের টাইপ বলে দেয়: typeof 800 → "number"। (একটি পুরনো অদ্ভুততা: typeof null → "object"—এটি ভাষার ঐতিহাসিক বাগ।)

বাগের কারণ: + অপারেটরের দুই কাজ। দুই পাশে number থাকলে যোগ করে; যেকোনো এক পাশে string থাকলে জুড়ে দেয় (concatenation)। ফর্ম বা টেক্সট বক্স থেকে আসা মান সাধারণত string হয়—তাই "800" + "150" = "800150"। সমাধান: হিসাবের আগে Number("800") দিয়ে number বানানো।

উপমা — এবং কোথায় ভাঙে

উপমা: Variable হলো রান্নাঘরের লেবেল-লাগানো কৌটা; ভেতরের জিনিস হলো value; “চাল/লবণ” লেবেলের মতো type বলে দেয় জিনিসটি কী ধরনের।

কোথায় ভাঙে: বাস্তবে লবণের কৌটায় চাল রাখলে চোখে পড়ে। JavaScript-এ একই variable-এ আগে number পরে string রাখা যায় (let দিয়ে), আর ভাষা কোনো সতর্কবার্তা দেয় না—ভুল ধরা পড়ে অনেক পরে, যেমন ৮০০১৫০।

ধাপে ধাপে উদাহরণ

ধাপে ধাপে বাগ ধরা ও ঠিক করা:

const priceText = "800";     // ফর্ম থেকে আসা—string
const delivery = 150;         // number
console.log(priceText + delivery);           // "800150"
console.log(typeof priceText, typeof delivery);
const price = Number(priceText);             // রূপান্তর
console.log(price + delivery);               // 950
800150
string number
950
  1. প্রথম লাইনে আউটপুট অদ্ভুত—তাই টাইপ দেখি।
  2. typeof জানায় একটি string, একটি number। string থাকায় + জুড়ে দিয়েছে।
  3. Number() দিয়ে রূপান্তর করে আবার যোগ—এবার সঠিক ৯৫০।

Number("abc") দিলে ফল NaN (Not a Number)—এটিও number টাইপ, কিন্তু অর্থ “অবৈধ সংখ্যা”। Number.isNaN(x) দিয়ে যাচাই করা যায়।

অনুশীলন / অ্যাক্টিভিটি

এই রানারে console.log আউটপুট দেখায়। ব্রাউজারের DOM, নেটওয়ার্ক (fetch), টাইমার বা ফাইল এখানে নেই—ইচ্ছাকৃতভাবে। Ctrl/⌘ + Enter চাপলেও Run হয়।

চেকআউট মোট ঠিক করুন

// সমস্যা: মোট ভুল আসছে। টাইপ দেখে ঠিক করুন।
const priceText = "800";   // ফর্ম থেকে এসেছে
const qtyText = "2";       // ফর্ম থেকে এসেছে
const delivery = 150;

const total = priceText * qtyText + delivery;   // এটা কি ঠিক?
const label = "মোট: " + total + " টাকা";
console.log(label);

// এবার এই লাইনটা দেখুন:
const wrong = priceText + delivery;
console.log("ভুল যোগ:", wrong, typeof wrong);

JavaScript চালু থাকলে এখানে Run বাটনসহ এডিটর আসবে।

লাইন ধরে বুঝি
  • priceText * qtyText: * শুধু গুণ করে, তাই JavaScript নিজে string-কে number বানায় (implicit conversion)। ফল ঠিক আসে—কিন্তু এটি ভাগ্যের ওপর নির্ভর।
  • priceText + delivery: + string দেখে জুড়ে দেয় → "800150"।
  • Number(...): স্পষ্ট রূপান্তর (explicit conversion)। কোড পড়েই বোঝা যায় কী হচ্ছে।
  • "মোট: " + total + " টাকা": এখানে জুড়ে দেওয়াটাই উদ্দেশ্য—লেখা বানানো।
এখানে এটা কেন ব্যবহার করেছি?

ইনপুট সবসময় স্পষ্টভাবে রূপান্তর করার অভ্যাস পরে মডেলের কোডে কাজে লাগবে: CSV বা JSON থেকে আসা সংখ্যা প্রায়ই string থাকে, আর ভুল টাইপে ভেক্টর হিসাব নীরবে ভুল ফল দেয়।

কোন বিষয়গুলো মনে রাখব?
  • ডিফল্ট const, বদলালে let
  • + এর এক পাশে string থাকলে জুড়ে দেয়
  • বাইরে থেকে আসা মান Number() দিয়ে রূপান্তর করুন
  • NaN = অবৈধ সংখ্যা; Number.isNaN দিয়ে যাচাই
এখনই কোনগুলো মুখস্থ করতে হবে না?
  • BigInt, Symbol টাইপ
  • implicit conversion-এর সব নিয়ম
  • var-এর hoisting নিয়ম
নিজে পরিবর্তন করে দেখুন

console.log("5" - 2, "5" + 2, "5" * "2", true + 1) চালানোর আগে প্রতিটির ফল অনুমান করে লিখুন। তারপর চালিয়ে মিলিয়ে নিন। কোনটি আপনাকে অবাক করল?

সাধারণ ভুল

  • ফর্মের মান number ধরে নেওয়া
  • const দিয়ে ঘোষণা করে পরে বদলানোর চেষ্টা (TypeError)
  • NaN-কে === দিয়ে যাচাই করা—NaN === NaN সবসময় false

জ্ঞান যাচাই

নিচের 3টি প্রশ্নের উত্তর দিয়ে “জমা দিন” চাপুন। স্কোর সার্ভারে যাচাই হয়; প্রতিটি উত্তরের পর কেন সঠিক বা ভুল তা দেখাবে। লগইন থাকলে ফল আপনার অগ্রগতিতে সংরক্ষিত হয়।

সংক্ষেপে মনে রাখুন

  • মান + টাইপ + নাম = variable
  • + অপারেটরের দ্বৈত আচরণ বাগের উৎস
  • স্পষ্ট রূপান্তর ও typeof দিয়ে ডিবাগ

পরবর্তী পাঠ

একাধিক মান একসাথে রাখতে লাগবে array ও object: Arrays ও Objects

সূত্র ও যাচাই

যাচাইয়ের তারিখ: 2026-10-19; লেখক: Muhibbullah Ansary। এই পাঠের 1টি JavaScript উদাহরণ বিল্ডের সময় সাইটের একই QuickJS রানারে চালানো হয়েছে এবং প্রত্যাশিত আউটপুট মিলেছে; সংখ্যাগত ফলাফল আলাদা assertion দিয়ে (floating-point tolerance সহ) পরীক্ষিত। স্বাধীন বিশেষজ্ঞ রিভিউ এখনও হয়নি; ভুল পেলে যোগাযোগ পাতায় জানান।

জ্ঞান যাচাই

<code>"300" + 50</code> এর ফল কী?
একটি দামের মান পরে কখনো বদলাবে না। কী দিয়ে ঘোষণা করবেন?
<code>Number("আটশো")</code> এর ফল কী এবং কেন?

আপনার শেখার অগ্রগতি সংরক্ষণ করতে লগইন করুন।

এখানে প্রশ্ন করুন

আপনার শেখার অগ্রগতি সংরক্ষণ করতে লগইন করুন।