if Keyword

The if keyword performs conditional branching in Bnlang.
A block runs only when its condition evaluates to true.
Chain with else if and else to handle multiple paths.


Syntax

if (<condition>) {
  // then-block
} else if (<another condition>) {
  // else-if block
} else {
  // else block
}

Examples

// গ্রেড চেকার
ধরি নম্বর = 85;

যদি (নম্বর >= 80) {
  ছাপাও("গ্রেড: A+");
} নাহলে যদি (নম্বর >= 70) {
  দেখাও("গ্রেড: A");
} নাহলে {
  লিখো("গ্রেড: A-এর নিচে");
}

// স্ট্রিং মিলানো
ধ্রুবক ব্যবহারকারী = "admin";
যদি (ব্যবহারকারী === "admin") {
  প্রিন্ট("স্বাগতম, অ্যাডমিন!");
} নাহলে {
  কনসোল.ত্রুটি("প্রবেশাধিকার বাতিল");
}

// ফাংশনে গার্ড (আগে বেরিয়ে যাওয়া)
ফাংশন বিল_পরিশোধ(পরিমাণ) {
  যদি (পরিমাণ <= 0) {
    কনসোল.ত্রুটি("পরিমাণ অবশ্যই ধনাত্মক হতে হবে");
    ফেরত;
  }
  কনসোল.লগ("পেমেন্ট প্রসেস হচ্ছে:", পরিমাণ);
}

Truthy & Falsy

Bnlang follows JavaScript-style truthiness. The following are falsy: false, 0, -0, 0n, "" (empty string), null, undefined, and NaN.
Everything else is truthy.


Nested conditions

const ভূমিকা = "editor";
const সক্রিয় = true;

যদি (সক্রিয়) {
  যদি (ভূমিকা === "admin") {
    কনসোল.লগ("পূর্ণ অ্যাক্সেস");
  } নাহলে যদি (ভূমিকা === "editor") {
    কনসোল.লগ("এডিট করার অনুমতি");
  } নাহলে {
    কনসোল.লগ("শুধু পড়ার অনুমতি");
  }
} নাহলে {
  কনসোল.সতর্ক("অ্যাকাউন্ট নিষ্ক্রিয়");
}

Best practices

  • Keep one language style (English/Bangla/Banglish) per file for readability.
  • Prefer strict comparison ===/!== for predictable checks.
  • Extract complex conditions into named variables or functions.
  • Use early returns inside functions to avoid deep nesting.