জাভাস্ক্রিপ্টে ফাংশন কল করার সময় আপনি যেকোনো সংখ্যক আর্গুমেন্ট পাস করতে পারেন। ফাংশন প্যারামিটারের লিমিট নেই। এর মানে ফাংশনগুলো ট্রেডিশনাল অর্থে ওভারলোড করা যায় না।
arguments অবজেক্ট হলো সব নন-অ্যারো ফাংশনে উপলব্ধ একটি লোকাল ভেরিয়েবল। ফাংশনের ভিতরে আর্গুমেন্টগুলো এক্সেস করতে arguments অবজেক্ট ব্যবহার করা হয়। এর এন্ট্রি থাকে ফাংশনে পাস করা প্রতিটি আর্গুমেন্টের জন্য, প্রথম এন্ট্রির ইন্ডেক্স ০।
উদাহরণ: আর্গুমেন্ট এক্সেস
arguments[0] // প্রথম আর্গুমেন্ট arguments[1] // দ্বিতীয় আর্গুমেন্ট arguments[2] // তৃতীয় আর্গুমেন্ট
নোট: arguments হলো একটি অ্যারে-লাইক অবজেক্ট যাতে length প্রপার্টি এবং শূন্য-ভিত্তিক ইন্ডেক্স থাকে, কিন্তু এর অ্যারের বিল্ট-ইন মেথড (যেমন forEach(), map()) নেই।
অবিচ্ছিন্ন আর্গুমেন্ট গ্রহণের উদাহরণ
function printAllArguments(a, b) {
console.log("First arg: " + a);
console.log("Second arg: " + b);
console.log("All args: " + arguments);
}
printAllArguments(1);
printAllArguments(1, "hello");
printAllArguments(1, "hello", 1, "hello");
আউটপুট
First arg: 1 Second arg: undefined All args: {"0":1}
First arg: 1 Second arg: hello All args: {"0":1,"1":"hello"}
First arg: 1 Second arg: hello All args: {"0":1,"1":"hello","2":1,"3":"hello"}
মডার্ন অ্যাল্টারনেটিভ: Rest Parameters (ES6)
function printAllArguments(...args) {
console.log("All args:", args); // রিয়েল অ্যারে
args.forEach(arg => console.log(arg));
}
printAllArguments(1, "hello", 1, "hello");
...args (রেস্ট প্যারামিটার) একটি রিয়েল অ্যারে রিটার্ন করে, যাতে সব অ্যারে মেথড ব্যবহার করা যায়। অ্যারো ফাংশনে arguments অবজেক্ট নেই, সেখানে রেস্ট প্যারামিটার ব্যবহার করতে হয়।