Regular Function এবং Arrow Function এর মধ্যে পার্থক্যগুলো বাংলায় ৭টি পয়েন্টে বিস্তারিতভাবে ব্যাখ্যা করা হলো:
✅ ১. Syntax (গঠন / সিনট্যাক্স)
🔹 Regular Function:
function add(a, b) {
return a + b;
}
🔹 Arrow Function:
const add = (a, b) => a + b;
📝 ব্যাখ্যা:
Arrow function ছোট ও কমপ্যাক্ট লেখার সুবিধা দেয়। function
কীওয়ার্ড লাগে না, এবং যদি শুধু return
থাকে, তাহলে {}
না দিলেও চলে।
✅ ২. Arguments binding (arguments অবজেক্ট ব্যবহার)
🔹 Regular Function:
arguments
অবজেক্ট সাপোর্ট করে — অর্থাৎ আপনি ফাংশনে কতগুলো আর্গুমেন্ট এসেছে তা access করতে পারবেন।
function showArgs() {
console.log(arguments);
}
showArgs(1, 2, 3); // Output: [1, 2, 3]
🔹 Arrow Function:
Arrow function নিজস্ব arguments
অবজেক্ট পায় না।
const showArgs = () => {
console.log(arguments); // ❌ Error: arguments is not defined
};
📝 ব্যাখ্যা:
Arrow function-এর arguments
থাকে না, বরং তার surrounding (outer) function থেকে নেয়।
✅ ৩. this কিভাবে কাজ করে
🔹 Regular Function:
this
ডাইনামিক — মানে, যেখানে ফাংশন কল করা হয়, সেটার উপর নির্ভর করে this
কাকে রেফার করবে।
const obj = {
name: "Regular",
sayName: function () {
console.log(this.name); // this = obj
},
};
obj.sayName(); // Output: Regular
🔹 Arrow Function:
Arrow function-এর this
ফিক্সড — এটি তার enclosing (বাইরের) scope-এর this
ব্যবহার করে।
const obj = {
name: "Arrow",
sayName: () => {
console.log(this.name); // this ≠ obj; this = window/global
},
};
obj.sayName(); // Output: undefined
📝 ব্যাখ্যা:
Arrow function এর মধ্যে this
bind হয় না, এটি তার parent scope থেকে this
গ্রহণ করে।
✅ ৪. new কিওয়ার্ড দিয়ে ইনস্ট্যান্স তৈরি
🔹 Regular Function:
Regular function কে constructor হিসেবে ব্যবহার করা যায় (new
দিয়ে object তৈরি করা যায়)।
function Person(name) {
this.name = name;
}
const p = new Person("Hasan");
console.log(p.name); // Hasan
🔹 Arrow Function: Arrow function constructor হিসেবে ব্যবহার করা যায় না।
const Person = (name) => {
this.name = name;
};
const p = new Person("Hasan"); // ❌ Error: Person is not a constructor
📝 ব্যাখ্যা: Arrow function কে কখনো constructor হিসেবে ব্যবহার করা যায় না।
✅ ৫. No duplicate named parameters (একই নামের প্যারামিটার)
🔹 Regular Function: Non-strict mode-এ Regular function এ একই নামে একাধিক প্যারামিটার ব্যবহার করা যায়।
function demo(a, a) {
console.log(a); // Latest value
}
demo(1, 2); // Output: 2
🔹 Arrow Function: Arrow function-এ একই নামে একাধিক প্যারামিটার দেওয়া যায় না — Syntax error দেয়।
const demo = (a, a) => {
console.log(a);
}; // ❌ SyntaxError
📝 ব্যাখ্যা: Arrow function strict mode অনুসরণ করে এবং ডুপ্লিকেট প্যারামিটার গ্রহণ করে না।
✅ ৬. Function Hoisting (উপরের দিকে তুলে আনা)
🔹 Regular Function: Hoisting সাপোর্ট করে — ফাংশন ডিফাইন করার আগে কল করলেও কাজ করে।
greet(); // Output: Hello
function greet() {
console.log("Hello");
}
🔹 Arrow Function: Hoisting সাপোর্ট করে না — ডিফাইন করার আগে কল করলে Error হয়।
greet(); // ❌ TypeError
const greet = () => {
console.log("Hello");
};
📝 ব্যাখ্যা:
Arrow function আসলে ভেরিয়েবল হিসেবে ডিফাইন হয়, তাই let
/const
এর মতো hoisting হয় না।
✅ ৭. Methods হিসেবে ব্যবহার
🔹 Regular Function:
Object এর মেথড হিসেবে খুব ভালো কাজ করে, কারণ এটি this
ঠিকভাবে ধরে রাখতে পারে।
const obj = {
name: "Regular",
show: function () {
console.log(this.name); // Output: Regular
},
};
obj.show();
🔹 Arrow Function:
Arrow function object মেথড হিসেবে ব্যবহারে সাবধানতা প্রয়োজন, কারণ এটি this
bind করে না।
const obj = {
name: "Arrow",
show: () => {
console.log(this.name); // undefined
},
};
obj.show();
📝 ব্যাখ্যা:
Object এর মেথড হিসেবে arrow function
সঠিকভাবে this
ব্যাবহার করতে পারে না।
🔚 সারাংশ টেবিল আকারে:
বৈশিষ্ট্য | Regular Function | Arrow Function |
---|---|---|
Syntax | function keyword দরকার | ছোট ও কমপ্যাক্ট |
arguments | পাওয়া যায় | পাওয়া যায় না |
this | Dynamic | Lexical (fixed) |
new keyword | Constructor হিসেবে ব্যবহারযোগ্য | নয় |
Duplicate parameters | non-strict mode এ চলে | চলে না |
Hoisting | হয় | হয় না |
Object methods | ভালো কাজ করে | this হারায় |