তীর ফাংশনগুলি ছোট, তবে প্রকৃত পার্থক্যগুলি শুধুমাত্র সিনট্যাক্সে নয়, বাইন্ডিং আচরণে রয়েছে।
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
তীর ফাংশনগুলি ছোট, তবে প্রকৃত পার্থক্যগুলি শুধুমাত্র সিনট্যাক্সে নয়, বাইন্ডিং আচরণে রয়েছে।
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
1. নিজস্ব this নেই — তীর ফাংশনগুলি এনক্লোজিং স্কোপ থেকে this উত্তরাধিকার সূত্রে পায়। এটি সবচেয়ে গুরুত্বপূর্ণ পার্থক্য এবং কেন তারা কলব্যাকের জন্য দুর্দান্ত:
const timer = {
seconds: 0,
start() {
setInterval(() => this.seconds++, 1000); // ✅ `this` is timer
// a regular function here would have its own `this` (undefined) → bug
},
};
2. arguments অবজেক্ট নেই — পরিবর্তে রেস্ট পরামিতি ব্যবহার করুন:
const sum = (...args) => args.reduce((a, b) => a + b, 0);
3. কনস্ট্রাক্টর হিসাবে ব্যবহার করা যায় না — new arrow() একটি ত্রুটি নিক্ষেপ করে, এবং তাদের কোন prototype নেই।
const obj = {
name: "Ann",
greet: () => `Hi ${this.name}`, // ❌ `this` is NOT obj (it's outer scope)
greet2() { return `Hi ${this.name}`; }, // ✅ method needs dynamic `this`
};
তীর ফাংশন ব্যবহার করবেন না অবজেক্ট মেথডের জন্য (তারা অবজেক্টের সাথে বাইন্ড হবে না) বা যখন আপনার গতিশীল this/arguments প্রয়োজন (ইভেন্ট হ্যান্ডলার যা this এর উপর নির্ভর করে যা উপাদান হওয়া প্রয়োজন)।
কলব্যাক এবং ছোট ফাংশনের জন্য তীর ব্যবহার করুন যেখানে this উত্তরাধিকার সূত্রে আপনি যা চান তা; পদ্ধতি, কনস্ট্রাক্টর এবং প্রোটোটাইপ পদ্ধতির জন্য সাধারণ ফাংশন ব্যবহার করুন।
বিস্তারিত উত্তরসহ IT ইন্টারভিউ প্রশ্নের একটি লাইব্রেরি — জুনিয়র থেকে সিনিয়র পর্যন্ত।
দান করুন