JavaScript Data Types!
জাভাস্ক্রিপ্ট শিখতে গিয়ে আমরা অনেকেই সরাসরি ফাংশন বা লুপ নিয়ে কাজ শুরু করে দিই।
কিন্তু কোডিং করতে গিয়ে যখন হুটহাট অদ্ভুত সব এরর (Error) আসে, তখন বোঝা যায় আমাদের বেসিক কনসেপ্টে কোথাও গ্যাপ রয়ে গেছে।

এই গ্যাপের প্রধান কারণ হলো Data Types সম্পর্কে পরিষ্কার ধারণা না থাকা।
সহজ কথায়, ডেটা টাইপ হলো কোনো ভ্যালু বা মানের প্রকৃতি।
জাভাস্ক্রিপ্ট একটি Dynamically Typed Language, যার মানে হলো আপনাকে ভেরিয়েবল ডিক্লেয়ার করার সময় বলে দিতে হয় না যে এটি সংখ্যা নাকি টেক্সট।
জাভাস্ক্রিপ্ট নিজে থেকেই এটি বুঝে নেয়। চলুন, এই ডেটা টাইপগুলোর একদম গভীরে প্রবেশ করি।
1. Understanding Primitive Data Types in JavaScript
প্রিমিটিভ ডেটা টাইপ হলো জাভাস্ক্রিপ্টের একদম মৌলিক ডেটা। এগুলো মেমরিতে সরাসরি সেভ হয় এবং এগুলো Immutable।
অর্থাৎ, একবার তৈরি করলে এদের মান পরিবর্তন করা যায় না (মানটি বদলে নতুন মান অ্যাসাইন করা যায়, কিন্তু আগেরটি পরিবর্তন হয় না)।
- String: কোটেশনের ভেতরে যা থাকে তাই স্ট্রিং। যেমন:
"Arif Almas". এটি টেক্সট প্রসেসিংয়ের জন্য ব্যবহৃত হয়। - Number: জাভাস্ক্রিপ্টে সব ধরণের সংখ্যা (Integer এবং Floating point) একই ক্যাটাগরিতে পড়ে। এছাড়া
InfinityএবংNaN(Not a Number) ও এই টাইপের অন্তর্ভুক্ত। - BigInt: আপনি যদি এমন কোনো সংখ্যা নিয়ে কাজ করেন যা $2^{53}-1$ এর চেয়ে বড়, তবে সাধারণ Number টাইপ কাজ করবে না। তখন সংখ্যার শেষে
nযুক্ত করে BigInt ব্যবহার করতে হয়। - Boolean: লজিক্যাল ডিসিশন মেকিংয়ের জন্য এটি অপরিহার্য। এর মান কেবল
trueবাfalseহতে পারে। - Undefined: যখন একটি ভেরিয়েবল ডিক্লেয়ার করা হয় কিন্তু কোনো মান দেওয়া হয় না, তখন জাভাস্ক্রিপ্ট ডিফল্টভাবে একে
undefinedধরে নেয়। - Null: এটি ডেভেলপারের পক্ষ থেকে ইচ্ছাকৃতভাবে দেওয়া “খালি” মান। এটি বোঝায় যে এখানে কোনো অবজেক্ট বা মান আপাতত নেই।
- Symbol: এটি একটি ইউনিক এবং ইনভিজিবল ভ্যালু তৈরি করে, যা সাধারণত অবজেক্টের প্রোপার্টি কি (Key) হিসেবে ব্যবহৃত হয় যাতে কোলিশন না হয়।
2. Deep Dive into Non-Primitive or Reference Data Types
প্রিমিটিভ টাইপগুলো শুধু একটি সিঙ্গেল ভ্যালু রাখতে পারে, কিন্তু যখন আমাদের অনেকগুলো ডেটাকে একসাথে গুছিয়ে রাখার প্রয়োজন হয়, তখন আমরা ব্যবহার করি Reference Data Types।
এগুলো মেমরিতে সরাসরি ডেটা না রেখে ওই ডেটার অ্যাড্রেস বা রেফারেন্স সেভ করে।
Objects: The Core of JavaScript
জাভাস্ক্রিপ্টে অবজেক্ট হলো কি-ভ্যালু পেয়ারের একটি কালেকশন। আমাদের বাস্তব জীবনের যে কোনো কিছুর ডেটা আমরা অবজেক্টে রাখতে পারি।
JavaScript
let developerInfo = {
name: "Arif",
skills: ["SEO", "Web Development"],
experience: 2
};
Arrays: Handling Lists of Data
অ্যারে আসলে এক ধরণের বিশেষ অবজেক্ট যা ইনডেক্স অনুযায়ী ডেটা সেভ করে।
যখন আমাদের একই ধরণের অনেকগুলো ডেটা (যেমন: ফলের নাম বা ইউজারের আইডি) এক জায়গায় রাখা দরকার হয়, তখন আমরা অ্যারে ব্যবহার করি।
3. JavaScript is Dynamically Typed: What Does It Mean?
অনেকেই প্রশ্ন করেন, জাভাস্ক্রিপ্ট কেন “ডাইনামিকালি টাইপড”?
এর কারণ হলো, আপনি একই ভেরিয়েবলে একবার সংখ্যা রাখতে পারেন, আবার পরে চাইলে সেখানে স্ট্রিংও রাখতে পারেন।
জাভাস্ক্রিপ্ট ইঞ্জিন রান-টাইমে ডিসাইড করে যে ওই ভেরিয়েবলের টাইপ কী হবে।
JavaScript
let data = 100; // Currently a Number
data = "Now a String"; // No error, dynamic shift!
যদিও এটি অনেক ফ্লেক্সিবিলিটি দেয়, কিন্তু বড় প্রোজেক্টে এটি মাঝেমধ্যে বাগ তৈরি করতে পারে।
এই সমস্যার সমাধানের জন্যই অনেকে TypeScript ব্যবহার করেন।
4. How to Check Data Types Using ‘typeof’ Operator
আপনার কোডে কোনো ডেটা কোন ফরম্যাটে আছে তা জানার সবথেকে সহজ উপায় হলো typeof অপারেটর।

typeof 42→"number"typeof "Hello"→"string"typeof true→"boolean"typeof undefined→"undefined"- বিচিত্র তথ্য:
typeof nullআপনাকে"object"রিটার্ন করবে। এটি জাভাস্ক্রিপ্টের প্রথম দিককার একটি ভুল (Bug), যা এখন আর ঠিক করা সম্ভব নয় কারণ এতে পুরনো অনেক ওয়েবসাইট ভেঙে যাবে!
5. Pass by Value vs. Pass by Reference
ডেটা টাইপ বোঝার আসল গুরুত্ব এখানেই।
- Primitive টাইপগুলো সবসময় Pass by Value হিসেবে কাজ করে। মানে হলো, একটি ভেরিয়েবল অন্য ভেরিয়েবলে কপি করলে মূল ভ্যালুটা কপি হয়।
- Reference টাইপগুলো (Object/Array) Pass by Reference হিসেবে কাজ করে। অর্থাৎ, আপনি যদি একটি অবজেক্ট অন্যটিতে কপি করেন এবং পরে দ্বিতীয়টিতে কোনো পরিবর্তন করেন, তবে প্রথম অবজেক্টটিও বদলে যাবে! কারণ তারা একই মেমরি লোকেশন শেয়ার করছে।
Why Mastering JavaScript Data Types Matters
জাভাস্ক্রিপ্ট ইঞ্জিনের ভেতরে ডেটা কীভাবে কাজ করে তা জানলে আপনার কোডিং স্ট্যান্ডার্ড অন্য লেভেলে চলে যাবে। কেন এটি জানা জরুরি?
- Memory Efficiency: Primitive ডেটা Stack-এ এবং Reference ডেটা Heap-এ থাকে। এই মেমরি অ্যালোকেশন বুঝলে আপনি অনেক বেশি অপ্টিমাইজড কোড লিখতে পারবেন, যা সাইটের LCP (Largest Contentful Paint) ইমপ্রুভ করতে সাহায্য করবে।
- Preventing Coercion Bugs: জাভাস্ক্রিপ্ট অনেক সময় অটোমেটিক টাইপ কনভার্ট করে ফেলে, যা লজিক্যাল বাগ তৈরি করে। টাইপ সম্পর্কে স্বচ্ছ ধারণা থাকলে এই ধরণের এরর সহজেই এড়ানো সম্ভব।
- Execution & SEO: দক্ষ ডেটা স্ট্রাকচার জাভাস্ক্রিপ্ট এক্সিকিউশন টাইম কমিয়ে দেয়। কোড যত ফাস্ট রান হবে, সার্চ ইঞ্জিনের ক্রলারের জন্য সাইটটি ইনডেক্স করা তত সহজ হবে যা সরাসরি আপনার Technical SEO-তে ইমপ্যাক্ট ফেলে।
আশা করি, এই গাইডটি আপনার জাভাস্ক্রিপ্ট জার্নিকে আরও সহজ করবে।
পরবর্তী পোস্টে আমরা জাভাস্ক্রিপ্টের অন্যতম ট্রিকি টপিক “Type Coercion” নিয়ে আলোচনা করব। কোনো প্রশ্ন থাকলে কমেন্টে জানান!
Summary:
JavaScript is a dynamically typed language, which means variables aren’t bound to a specific data type at declaration. This flexibility is powerful but requires a solid understanding of how data is stored and manipulated. At its core, JavaScript categorizes data into two main groups: Primitive and Reference types.




