Functions ও Conditions
- parameter ও return সহ function লিখতে ও কল করতে পারবেন
- if / else if / else এবং ===, >, &&, || দিয়ে সিদ্ধান্ত লিখতে পারবেন
- arrow function সিনট্যাক্স পড়তে ও লিখতে পারবেন
সমস্যাটা কী?
ডেলিভারি নিয়ম: ঢাকার ভেতরে ৮০ টাকা, বাইরে ১৫০ টাকা, আর ২০০০ টাকার বেশি অর্ডারে ঢাকার ভেতরে ফ্রি। এই হিসাব চেকআউট, কার্ট ও অর্ডার-কনফার্মেশন—তিন জায়গায় কপি-পেস্ট করা। নিয়ম বদলালে তিন জায়গায় বদলাতে হয়, আর একটিতে ভুলে গেলে গ্রাহক তিন রকম দাম দেখেন।
শেখার লক্ষ্য
- parameter ও return সহ function লিখতে ও কল করতে পারবেন
- if / else if / else এবং ===, >, &&, || দিয়ে সিদ্ধান্ত লিখতে পারবেন
- arrow function সিনট্যাক্স পড়তে ও লিখতে পারবেন
পূর্বশর্ত
ব্যাখ্যা
ফাংশন (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 দেয়, কিন্তু সবসময় এমন ভাগ্য হবে না।
ধাপে ধাপে উদাহরণ
তিনটি ইনপুটে ফাংশন ট্রেস করি:
| insideDhaka | orderTotal | প্রথম শর্ত (&&) | দ্বিতীয় শর্ত | ফল |
|---|---|---|---|---|
| true | 2500 | true && true = true | — | 0 |
| true | 1500 | true && false = false | true | 80 |
| false | 3000 | false && … = false | false | 150 |
লক্ষ্য করুন: শর্তগুলো উপর থেকে নিচে পরীক্ষা হয়, প্রথম যেটি সত্য সেটির ভেতরের 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));লাইন ধরে বুঝি
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
সূত্র ও যাচাই
জ্ঞান যাচাই
আপনার শেখার অগ্রগতি সংরক্ষণ করতে লগইন করুন।
এখানে প্রশ্ন করুন
আপনার শেখার অগ্রগতি সংরক্ষণ করতে লগইন করুন।