চলক কীওয়ার্ড
var কারেন্ট স্কোপে একটি নতুন ভ্যারিয়েবল পরিচয় করায়। এটি Bnlang-এর একমাত্র ভ্যারিয়েবল-ডিক্লেয়ারেশন কীওয়ার্ড — কোনো let বা const নেই।
বাংলা রূপ চলক ও ধরি সম্পূর্ণ সমার্থক — যেটা স্বাভাবিক মনে হয় সেটাই ব্যবহার করুন।
সিনট্যাক্স
var <name> = <expression>;
var <name>; // ডিক্লেয়ার্ড, মান null
উদাহরণ
var greeting = "Hello";
var count = 0;
var items = [1, 2, 3];
var user = { name: "আলিস" };
// initializer ছাড়া ভ্যারিয়েবল null হয়।
var pending;
print(pending); // null
বাংলা রূপ একই ভাবে পার্স হয়:
চলক অভিবাদন = "হ্যালো";
চলক গণনা = 0;
print(অভিবাদন, গণনা); // হ্যালো 0
পুনঃঅ্যাসাইনমেন্ট
ভ্যারিয়েবল mutable। = দিয়ে অ্যাসাইন করুন:
var x = 1;
x = x + 1;
print(x); // 2
কোনো compound অ্যাসাইনমেন্ট অপারেটর (+=, -=, ইত্যাদি) নেই। পূর্ণ রূপ লিখুন: x = x + 1।
স্কোপ
var ডিক্লেয়ারেশন যে ব্লকে ({ ... } বডি) লেখা হয়, সেখানেই স্কোপড। লুকআপ বাইরের ফাংশনে, তারপর মডিউল টপ-লেভেলে পৌঁছায়।
var outer = "module";
function demo() {
var outer = "function"; // মডিউল-লেভেল outer-কে shadow করে
if (true) {
var outer = "block"; // ফাংশন-লেভেল outer-কে shadow করে
print(outer); // "block"
}
print(outer); // "function"
}
demo();
print(outer); // "module"
ক্লোজার
ইনার ফাংশন আউটার ভ্যারিয়েবল রেফারেন্স দিয়ে ক্যাপচার করে — মিউটেশন ক্লোজার থেকে দেখা যায়:
function make_counter() {
var n = 0;
return function () {
n = n + 1;
return n;
};
}
var c = make_counter();
print(c()); // 1
print(c()); // 2
print(c()); // 3
যা এখানে নেই
- কোনো
letবাconstনেই। সবকিছুর জন্যvarব্যবহার করুন। "এটি পরিবর্তন হওয়া উচিত নয়" বোঝাতে চাইলে নামকরণ কনভেনশন ব্যবহার করুন (UPPER_CASEকনস্ট্যান্ট একটি কমন কনভেনশন)। - কোনো destructuring নেই। প্রতিটি
varঠিক একটি নাম ডিক্লেয়ার করে। ফিল্ড এক্সট্রাক্ট করতেvar x = obj.x; var y = obj.y;লিখুন। - কোনো multi-declare নেই।
var a, b, c;সাপোর্টেড নয় — প্রতিটি ভ্যারিয়েবলের জন্য আলাদা স্টেটমেন্ট।