Lesson ৬ মিনিট পড়া

কন্ডিশনাল বা শর্ত (Conditionals)

আপনার কোডকে সিদ্ধান্ত নিতে শেখান — অনেকটা 'চুজ-ইওর-ওন-অ্যাডভেঞ্চার' (choose-your-own-adventure) বইয়ের মতো

If / Else — সিদ্ধান্ত গ্রহণকারী (If / Else — The Decision Maker)

কল্পনা করুন আপনি এমন এক রাস্তায় আছেন যা সামনে গিয়ে দু'দিকে ভাগ হয়ে গেছে। যদি বৃষ্টি হয়, তবে আপনি ছাতা নিয়ে যাবেন। আর তা না হলে আপনি রোদচশমা (sunglasses) পরে যাবেন। if / else ঠিক এই কাজটিই করে — কোনো শর্ত সত্য (true) নাকি মিথ্যা (false) তার ওপর ভিত্তি করে এটি আপনার কোডকে একটি পথ বেছে নেওয়ার সুযোগ দেয়।

দুটির বেশি সম্ভাবনা সামলাতে বা হ্যান্ডল করার জন্য আপনি চাইলে else if ব্যবহার করে একাধিক শর্ত জুড়তে পারেন। জাভাস্ক্রিপ্ট এগুলোকে ওপর থেকে নিচে যাচাই করে এবং প্রথম যে শর্তটির সাথে মিলে যায় বা ম্যাচ করে, ব্লকের সেই অংশটিকে রান বা এক্সিকিউট করে থাকে।

If / Else If / Else

let temperature = 35;
if (temperature > 30) {
console.log("It's scorching! Stay hydrated 🥵");
} else if (temperature > 20) {
console.log("Nice weather! Go for a walk 😎");
} else if (temperature > 10) {
console.log("A bit chilly. Grab a jacket 🧥");
} else {
console.log("Freezing! Stay inside 🥶");
}
// Single-line if (no braces needed, but be careful)
let age = 20;
if (age >= 18) console.log("You can vote!");
Output
It's scorching! Stay hydrated 🥵
You can vote!

ট্রুথি এবং ফলসি — জাভাস্ক্রিপ্টের অদ্ভুত সত্য বলার নিয়ম (Truthy & Falsy — JavaScript's Weird Truth System)

জাভাস্ক্রিপ্টে if কেবলমাত্র true এবং false এর সাথেই কাজ করে না। এটি যেকোনো ভ্যালু বা মানের সাথেই কাজ করতে পারে। কোনো ভ্যালু "ট্রুথি (truthy)" (যাকে true হিসেবে ধরা হয়) নাকি "ফলসি (falsy)" (যাকে false হিসেবে ধরা হয়), সেটি জাভাস্ক্রিপ্ট নিজেই নির্ধারণ করে নেয়।

ঠিক ৭টি ফলসি (falsy) ভ্যালু রয়েছে। আর অন্য সবকিছুই হলো ট্রুথি (truthy):

  • false — অবশ্যই
  • 0 — শূন্য হলো ফলসি
  • -0 — নেগেটিভ শূন্য (হ্যাঁ, এরও অস্তিত্ব আছে)
  • 0n — BigInt শূন্য
  • "" — ফাঁকা বা এম্পটি স্ট্রিং
  • null
  • undefined
  • NaN

এগুলো বাদে বাকি সবকিছুই — যার মধ্যে "0" (string zero), [] (empty array), এবং {} (empty object) অন্তর্ভুক্ত — হলো ট্রুথি (truthy)। এই ব্যাপারটি অনেকেই বুঝতে ভুল করেন!

ট্রুথি/ফলসির চমক বা সারপ্রাইজ (Truthy/Falsy Surprises)

// These are all FALSY
if (!false) console.log("false is falsy");
if (!0) console.log("0 is falsy");
if (!"") console.log("empty string is falsy");
if (!null) console.log("null is falsy");
if (!undefined) console.log("undefined is falsy");
if (!NaN) console.log("NaN is falsy");
// These are TRUTHY (surprise!)
if ("0") console.log("'0' (string) is truthy!");
if ([]) console.log("[] (empty array) is truthy!");
if ({}) console.log("{} (empty object) is truthy!");
// Common pattern: check if a string has content
let username = "";
if (username) {
console.log(`Welcome, ${username}`);
} else {
console.log("Please enter a username");
}
Output
false is falsy
0 is falsy
empty string is falsy
null is falsy
undefined is falsy
NaN is falsy
'0' (string) is truthy!
[] (empty array) is truthy!
{} (empty object) is truthy!
Please enter a username

Switch, Ternary এবং Nullish Coalescing (Switch, Ternary & Nullish Coalescing)

যখন আপনি কোনো একটি ভ্যালুকে অনেকগুলো সম্ভাব্য বিকল্পের সাথে মিলিয়ে দেখতে চান, তখন সুইচ (Switch) দারুণ কাজ করে — অনেকটা টিভি রিমোটের (TV remote) মতো, যেখানে নির্দিষ্ট বাটন চাপার সাথে নির্দিষ্ট চ্যানেল মিলে যায়।

টার্নারি অপারেটর (ternary operator) (condition ? valueIfTrue : valueIfFalse) হলো if/else এর একটি সংক্ষিপ্ত রূপ যা মাত্র এক লাইনের একটি এক্সপ্রেশনেই এঁটে যায়। শর্তের ওপর ভিত্তি করে ভ্যালু বা মান অ্যাসাইন (assign) করার জন্য এটি বেশ কার্যকরী।

নালিশ কোলিসিং অপারেটর (nullish coalescing operator) (??) কোনো কিছু null অথবা undefined হলে একটি ডিফল্ট ভ্যালু (default value) প্রদান করে। এটি || এর চেয়ে বেশি নিখুঁত (precise), কারণ এটি 0 বা ""-কে "ফাঁকা" বা "খালি" হিসেবে ধরে নেয় না।

Switch এবং Ternary এর প্যাটার্নসমূহ (Switch & Ternary Patterns)

// Switch — match a value against cases
let fruit = "apple";
switch (fruit) {
case "apple":
console.log("Red or green?");
break;
case "banana":
console.log("Goes great in smoothies!");
break;
case "cherry":
case "strawberry":
console.log("Berry delicious!"); // multiple cases, one block
break;
default:
console.log("Never heard of that fruit!");
}
// Ternary — compact if/else
let score = 85;
let grade = score >= 90 ? "A" : score >= 80 ? "B" : "C";
console.log(`Grade: ${grade}`);
// ?? vs || for defaults
let volume = 0;
console.log(volume || 50); // 50 (wrong! 0 is a valid volume)
console.log(volume ?? 50); // 0 (correct! 0 is not null/undefined)
Output
Red or green?
Grade: B
50
0
Note: switch case-এ break দিতে ভুলে গেছেন? জাভাস্ক্রিপ্ট তখন তার নিচের দিকে থাকা সব কোডের ওপর দিয়ে 'ফল থ্রু (fall through)' করবে বা নিচে নামতে থাকবে, এবং break বা switch এর শেষ মাথায় না পৌঁছানো পর্যন্ত সব কোড রান করবে। এটিকে মূলত একটি ফিচার বা বৈশিষ্ট্য হিসেবেই ধরা হয় (একাধিক কেস একসাথে গ্রুপ বা দলবদ্ধ করার জন্য এটি উপকারী), তবে এটি কোডে বাগ (bug) বা এরর তৈরি করার অন্যতম বড় একটি কারণ। কিছু ডেভেলপার switch কে এড়িয়ে চলেন এবং এর পরিবর্তে অবজেক্ট বা if/else এর চেইন ব্যবহার করতে বেশি পছন্দ করেন।
চ্যালেঞ্জ

ছোট কুইজ

জাভাস্ক্রিপ্টে নিচের কোন ভ্যালু বা মানটি TRUTHY?
Strings & Template LiteralsLoops