Lesson ৭ মিনিট পড়া

ভ্যারিয়েবল এবং ডেটা টাইপ (Variables & Data Types)

আপনার ডেটাগুলোকে নামকরণের মাধ্যমে জাভাস্ক্রিপ্টকে বুঝিয়ে দিন

ভ্যারিয়েবল কী? (What Are Variables?)

কল্পনা করুন আপনার রান্নাঘরে লেবেল লাগানো কিছু বয়াম আছে। একটিতে লেখা "চিনি," অন্যটিতে লেখা "ময়দা।" আপনি যেকোনো বয়ামের ভেতরে উঁকি দিয়ে দেখতে পারেন সেখানে কী আছে, ভেতরের জিনিসগুলো বদলাতে পারেন, বা পুরোটা খালি করে ফেলতে পারেন। ভ্যারিয়েবলগুলো অবিকল সেই বয়ামগুলোর মতোই — এগুলো কোনো ডেটাকে ধারণ করে এবং সেগুলোর একটি নাম দেয় যা আপনি পরে ব্যবহার করতে পারেন।

জাভাস্ক্রিপ্টে আপনি তিনটি কীওয়ার্ডের যেকোনো একটি ব্যবহার করে ভ্যারিয়েবল তৈরি করতে পারেন: let, const, বা var

  • let — আপনার প্রথম পছন্দ। আপনি চাইলে পরে এর ভেতরের জিনিস পরিবর্তন করতে পারেন।
  • const — একটি তালাবদ্ধ বয়াম। একবার ভেতরে কিছু রাখলে, আপনি আর তা বদলাতে পারবেন না।
  • var — পুরোনো পদ্ধতি। এটি এখনও কাজ করে, তবে এর কিছু অদ্ভুত আচরণ আছে যা আপনাকে বিপদে ফেলতে পারে। এর বদলে let এবং const ব্যবহার করা ভালো।

ভ্যারিয়েবল তৈরি করা (Creating Variables)

let playerName = "Asif";
let score = 0;
const maxLives = 3;
score = 42; // ✅ let allows reassignment
// maxLives = 5; // ❌ TypeError — const can't be reassigned
console.log(playerName); // "Asif"
console.log(score); // 42
console.log(maxLives); // 3
Output
Asif
42
3

জাভাস্ক্রিপ্টের ডেটা টাইপগুলো (JavaScript's Data Types)

জাভাস্ক্রিপ্টে প্রতিটি ভ্যালুর একটি টাইপ (type) থাকে — এভাবেই জাভাস্ক্রিপ্ট বুঝতে পারে আপনি কোনো সংখ্যা নিয়ে কাজ করছেন, নাকি কোনো টেক্সট, নাকি সম্পূর্ণ ভিন্ন কিছু নিয়ে। এখানে ৭টি প্রিমিটিভ টাইপ (primitive types) (সহজ, একক ভ্যালু) এবং ১টি অবজেক্ট টাইপ (object type) (জটিল, যেখানে একাধিক ভ্যালু থাকতে পারে) রয়েছে।

এখানে সেই প্রিমিটিভগুলো দেওয়া হলো যেগুলো আপনার রোজকার কাজে লাগবে:

  • Number — যেকোনো গাণিতিক নাম্বার বা সংখ্যা: 42, 3.14, -7। জাভাস্ক্রিপ্ট পূর্ণসংখ্যা (integer) এবং দশমিককে (decimal) আলাদা করে না — সবগুলোই কেবল "number"।
  • String — কোটেশন (quote) দিয়ে ঘেরা টেক্সট: "hello", 'world', বা ব্যাকটিক `hi`
  • Boolean — এর শুধুমাত্র দুটি সম্ভাব্য মান রয়েছে: true (সত্য) বা false (মিথ্যা)। একে অনেকটা লাইটের সুইচের মতো চিন্তা করতে পারেন।
  • Undefined — এমন একটি ভ্যারিয়েবল যার অস্তিত্ব আছে কিন্তু এখনও কোনো ভ্যালু দেওয়া হয়নি। অনেকটা লেবেল লাগানো একটি ফাঁকা বয়ামের মতো।
  • Null — আপনি ইচ্ছাকৃতভাবে বলছেন যে "এই বয়ামটি ফাঁকা।" এটি বুঝিয়ে দেয় যে আপনি ইচ্ছাকৃতভাবেই সেখানে "কিছুই না" রেখেছেন।
  • BigInt — অনেক, অনেক বড় সংখ্যার জন্য, যা সাধারণ Number সামলাতে পারে না।
  • Symbol — একটি অদ্বিতীয় বা ইউনিক আইডেন্টিফায়ার (identifier)। সম্ভবত অনেক পরের দিকের আগে এটি আপনার কাজে লাগবে না।

typeof — কোন জিনিসটি কী টাইপের তা যাচাই করুন (typeof — Checking What Type Something Is)

console.log(typeof 42); // "number"
console.log(typeof "hello"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object" 😱 (a famous JS bug!)
console.log(typeof NaN); // "number" (yep, "Not a Number" is a number)
console.log(typeof {}); // "object"
console.log(typeof []); // "object" (arrays are objects too!)
Output
number
string
boolean
undefined
object
number
object
object

NaN এবং null এর অদ্ভুত আচরণ (The Weirdness of NaN and null)

NaN এর মানে হলো "Not a Number" বা এটি কোনো সংখ্যা নয়, কিন্তু typeof NaN আবার "number" রিটার্ন করে। তাজ্জব ব্যাপার, তাই না? এটি তখনই দেখা যায় যখন কোনো অঙ্কের হিসাবে গণ্ডগোল হয় — যেমন কোনো শব্দকে সংখ্যা দিয়ে গুণ করার চেষ্টা করা।

null এর মানে হলো "কোনো ভ্যালু নেই," অথচ typeof null আবার "object" রিটার্ন করে। এটি আসলে ১৯৯৫ সালের একটি বাগ (bug) যা কখনোই ঠিক করা হয়নি কারণ এর ওপর ভিত্তি করে আগে থেকেই অনেক কোড লেখা হয়ে গিয়েছিল। জাভাস্ক্রিপ্টের অদ্ভুত জগতে আপনাকে স্বাগতম!

NaN চেক করার জন্য Number.isNaN() ব্যবহার করুন। আর null চেক করার জন্য কেবল === null ব্যবহার করুন।

NaN এর প্যাঁচ বা গণ্ডগোল (NaN Gotchas)

let result = "আম" * 3;
console.log(result); // NaN
console.log(result === NaN); // false (NaN is not equal to anything, even itself!)
console.log(Number.isNaN(result)); // true ✅ the correct way
let empty = null;
console.log(empty === null); // true
console.log(empty === undefined); // false (null and undefined are different!)
Output
NaN
false
true
true
false
Note: let বনাম const-কে হোয়াইটবোর্ড বনাম ফলক (plaque) এর মতো চিন্তা করুন। একটি হোয়াইটবোর্ড (let) আপনি যেকোনো সময় মুছে আবার লিখতে পারেন। আর একটি ফলকে (const) খোদাই করা থাকে — একবার লেখা হয়ে গেলে সেটি আর বদলানো যায় না। আপনার যদি কোনো সন্দেহ থাকে, তবে সব সময় const দিয়ে শুরু করবেন এবং শুধুমাত্র তখনই let এ পরিবর্তন করবেন যখন আপনার পরে ভ্যালুটি বদলানোর প্রয়োজন হবে।
চ্যালেঞ্জ

ছোট কুইজ

জাভাস্ক্রিপ্টে typeof null কী রিটার্ন করবে?
Why Learn JavaScript?Operators & Expressions