ফাংশন কীওয়ার্ড
function একটি ফাংশন পরিচয় করায়। ফাংশন first-class মান — আপনি এদের ভ্যারিয়েবলে রাখতে পারেন, আর্গুমেন্ট হিসেবে পাস করতে পারেন, এবং অন্য ফাংশন থেকে ফেরত দিতে পারেন। বাংলা রূপ ফাংশন সমার্থক।
ডিক্লেয়ারেশন
function add(a, b) {
return a + b;
}
print(add(2, 3)); // 5
এক্সপ্রেশন (anonymous function)
var double = function (n) { return n * 2; };
print(double(7)); // 14
কলব্যাক বা .next / .fail handler পাস করার সময় এই রূপটি প্রচুর দেখবেন:
import "request" as r;
r.get("https://example.com/data")
.next(function (resp) { print(resp.body); })
.fail(function (e) { print("err:", e); });
ফিক্সড অ্যারিটি (optional default-সহ)
ফাংশন নির্দিষ্ট সংখ্যক আর্গুমেন্ট নেয়। কোনো overload, rest parameter বা arguments object নেই। তবে প্যারামিটার লিস্টের শেষে ডিফল্ট মান দেওয়া যায় — সেগুলো call site-এ optional হয়ে যায়।
function greet(name, greeting = "Hi") {
return greeting + ", " + name;
}
greet("Alice"); // "Hi, Alice"
greet("Alice", "Hello"); // "Hello, Alice"
// greet(); // error: 1 to 2 arguments expected, got 0
ডিফল্টের নিয়ম:
-
ডিফল্ট অবশ্যই প্যারামিটার লিস্টের শেষে থাকতে হবে।
function bad(a = 1, b) {...}parse error। -
ডিফল্ট এক্সপ্রেশন প্রতি call-এ lazy ভাবে evaluate হয়, ফাংশনের local env-এ — তাই পরের ডিফল্ট আগের প্যারামিটার রেফার করতে পারে:
function range(start, end = start + 10) { return [start, end]; } range(0); // [0, 10] range(100); // [100, 110]
সত্যিকারের ভিন্ন intent থাকলে এখনো আলাদা নামের ফাংশনে ভাগ করুন:
function greet(name) { return "Hi, " + name; }
function greet_formal(title, name) { return title + " " + name; }
ক্লোজার
ইনার ফাংশন আউটার ভ্যারিয়েবল রেফারেন্স দিয়ে ক্যাপচার করে:
function make_counter() {
var n = 0;
return function () {
n = n + 1;
return n;
};
}
var c = make_counter();
print(c()); // 1
print(c()); // 2
রিটার্ন ভ্যালু
return <expr>; এক্সপ্রেশনের মান ফেরত দেয়। খালি return; (অথবা শেষ পর্যন্ত পৌঁছানো) null ফেরত দেয়।
বিস্তারিত return দেখুন।
বাংলা রূপ
ফাংশন যোগ(a, b) {
ফেরত a + b;
}
print(যোগ(2, 3)); // 5