Inherited from v1.0.0

ফাংশন কীওয়ার্ড

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