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

Functions ও Conditions

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

  • parameter ও return সহ function লিখতে ও কল করতে পারবেন
  • if / else if / else এবং ===, >, &&, || দিয়ে সিদ্ধান্ত লিখতে পারবেন
  • arrow function সিনট্যাক্স পড়তে ও লিখতে পারবেন

সমস্যাটা কী?

ডেলিভারি নিয়ম: ঢাকার ভেতরে ৮০ টাকা, বাইরে ১৫০ টাকা, আর ২০০০ টাকার বেশি অর্ডারে ঢাকার ভেতরে ফ্রি। এই হিসাব চেকআউট, কার্ট ও অর্ডার-কনফার্মেশন—তিন জায়গায় কপি-পেস্ট করা। নিয়ম বদলালে তিন জায়গায় বদলাতে হয়, আর একটিতে ভুলে গেলে গ্রাহক তিন রকম দাম দেখেন।

শেখার লক্ষ্য

  • parameter ও return সহ function লিখতে ও কল করতে পারবেন
  • if / else if / else এবং ===, >, &&, || দিয়ে সিদ্ধান্ত লিখতে পারবেন
  • arrow function সিনট্যাক্স পড়তে ও লিখতে পারবেন

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

পূর্বশর্ত

ব্যাখ্যা

ফাংশন (function) একটি কাজকে নাম দেয় যাতে একবার লিখে বহুবার ব্যবহার করা যায়।

function deliveryCharge(insideDhaka, orderTotal) {   // parameter
  if (insideDhaka && orderTotal > 2000) {
    return 0;            // return: আউটপুট ফেরত, ফাংশন এখানেই শেষ
  } else if (insideDhaka) {
    return 80;
  } else {
    return 150;
  }
}
console.log(deliveryCharge(true, 2500));   // কল করা (argument দিয়ে) → 0
তুলনা ও যুক্তি অপারেটর
অপারেটরঅর্থউদাহরণ → ফল
===মান ও টাইপ দুটোই সমান5 === 5 → true, 5 === "5" → false
!==সমান নয়"ঢাকা" !== "খুলনা" → true
> < >= <=বড়/ছোট2500 > 2000 → true
&&দুটোই সত্য হলে সত্য (AND)true && false → false
||যেকোনো একটি সত্য হলে সত্য (OR)true || false → true
!উল্টো (NOT)!true → false

== (দুটি সমান চিহ্ন) টাইপ রূপান্তর করে তুলনা করে (5 == "5" → true)—এটি বাগ লুকায়। এই কোর্সে সবসময় ===।

Arrow function: ছোট function লেখার সংক্ষিপ্ত রূপ। const double = (x) => x * 2; মানে “x নাও, x × 2 ফেরত দাও”। এক লাইনে থাকলে return লিখতে হয় না। একাধিক লাইনে { } ও return লাগে।

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

উপমা: Function হলো একটি রেসিপি: উপকরণ (parameter) দিলে খাবার (return) পাবেন। if/else হলো রেসিপির ভেতরের “যদি দুধ না থাকে তবে পানি দিন” নির্দেশ।

কোথায় ভাঙে: রেসিপিতে উপকরণ ভুল দিলে রাঁধুনি বুঝতে পারেন। JavaScript function ভুল টাইপের argument পেলেও চুপচাপ চলবে—যেমন orderTotal-এ "2500" (string) দিলে "2500" > 2000 রূপান্তর করে true দেয়, কিন্তু সবসময় এমন ভাগ্য হবে না।

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

তিনটি ইনপুটে ফাংশন ট্রেস করি:

insideDhakaorderTotalপ্রথম শর্ত (&&)দ্বিতীয় শর্তফল
true2500true && true = true—0
true1500true && false = falsetrue80
false3000false && … = falsefalse150

লক্ষ্য করুন: শর্তগুলো উপর থেকে নিচে পরীক্ষা হয়, প্রথম যেটি সত্য সেটির ভেতরের return চলে, বাকিগুলো আর দেখা হয় না। তাই ক্রম গুরুত্বপূর্ণ—“ফ্রি” শর্তটি “৮০” শর্তের আগে না থাকলে ফ্রি কখনো আসত না।

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

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

ডেলিভারি চার্জ ফাংশন — একটি বাগ আছে

// নিয়ম: ঢাকায় 80, বাইরে 150, ঢাকায় 2000-এর বেশি হলে ফ্রি
function deliveryCharge(insideDhaka, orderTotal) {
  if (insideDhaka) {
    return 80;
  } else if (insideDhaka && orderTotal > 2000) {
    return 0;
  } else {
    return 150;
  }
}

console.log("ঢাকা 2500:", deliveryCharge(true, 2500));   // 0 হওয়া উচিত
console.log("ঢাকা 1500:", deliveryCharge(true, 1500));   // 80
console.log("বাইরে 3000:", deliveryCharge(false, 3000)); // 150

// arrow function দিয়ে মোট দাম
const grandTotal = (insideDhaka, orderTotal) => orderTotal + deliveryCharge(insideDhaka, orderTotal);
console.log("মোট:", grandTotal(true, 1500));

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

লাইন ধরে বুঝি
  • function deliveryCharge(insideDhaka, orderTotal): দুটি parameter—কল করার সময় যে মান দেওয়া হয় (argument) সেগুলো এখানে বসে।
  • insideDhaka && orderTotal > 2000: আগে > হিসাব হয়, তারপর &&। দুটো সত্য হলেই পুরোটা সত্য।
  • return 0;: মান ফেরত দিয়ে ফাংশন থেমে যায়—নিচের else if আর চলে না।
  • const grandTotal = (a, b) => ...: arrow function, যেটি ভেতরে আরেকটি function কল করছে। function দিয়ে function বানানো স্বাভাবিক।
এখানে এটা কেন ব্যবহার করেছি?

হিসাব একটি function-এ থাকলে নিয়ম বদলাতে এক জায়গায় বদলাতে হয়, আর আলাদাভাবে পরীক্ষা করা যায় (সীমানা ২০০০, ২০০১)। পরের অধ্যায়ের সব গণিত—dot product, loss, softmax—ছোট ছোট function হিসেবে লিখব।

কোন বিষয়গুলো মনে রাখব?
  • function: parameter নেয়, return দেয়
  • শর্ত উপর থেকে নিচে; নির্দিষ্টটি আগে
  • সবসময় === ব্যবহার
  • arrow: (x) => x * 2
এখনই কোনগুলো মুখস্থ করতে হবে না?
  • switch statement
  • default parameter ও rest parameter
  • function hoisting-এর নিয়ম
নিজে পরিবর্তন করে দেখুন

নতুন নিয়ম যোগ করুন: চট্টগ্রামে ১২০ টাকা। প্রথম parameter boolean-এর বদলে শহরের নাম (string) নিন: deliveryCharge("চট্টগ্রাম", 1000)। কোন শর্ত কোন ক্রমে রাখবেন?

সাধারণ ভুল

  • সাধারণ শর্ত নির্দিষ্ট শর্তের আগে রাখা (এই পাঠের বাগ)
  • return না লিখে console.log দেওয়া—তখন ফাংশন undefined ফেরত দেয়
  • = (মান দেওয়া) আর === (তুলনা) গুলিয়ে ফেলা
  • সীমানার মান (ঠিক ২০০০) পরীক্ষা না করা

জ্ঞান যাচাই

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

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

  • একবার লিখে বহুবার ব্যবহার = function
  • if/else ক্রম ফলাফল নির্ধারণ করে
  • সীমানার মান দিয়ে পরীক্ষা

পরবর্তী পাঠ

পুরো ক্যাটালগে একই কাজ চালাতে লাগবে loop; কোড ভাগ করতে module: Loops, Modules ও Execution Flow

সূত্র ও যাচাই

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

জ্ঞান যাচাই

<code>5 === "5"</code> এর ফল কী?
একটি function-এ return না থাকলে কল করলে কী ফেরত আসে?
<code>const sq = (x) => x * x;</code> হলে <code>sq(4)</code> কত?

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

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

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