ফাংশন এক্সপ্রেশন vs ফাংশন ডিক্লেয়ারেশন
functionDisplayOne হলো একটি ফাংশন এক্সপ্রেশন, অন্যদিকে functionDisplayTwo হলো একটি ফাংশন ডিক্লেয়ারেশন। ফাংশন ডিক্লেয়ারেশন তার সংরক্ষক ফাংশন এক্সিকিউট হওয়ার সাথে সাথে ডিফাইন হয়ে যায়।
উভয় পদ্ধতিই জাভাস্ক্রিপ্টে ফাংশন ডিক্লেয়ার করতে ব্যবহৃত হয় এবং functionDisplayOne একটি অ্যানোনিমাস ফাংশন।
ফাংশন এক্সপ্রেশন
functionDisplayOne(); // ❌ ReferenceError: Cannot access before initialization
var functionDisplayOne = function() {
console.log("Hello!");
};
ফাংশন ডিক্লেয়ারেশন
functionDisplayTwo(); // ✅ কাজ করে (হোইস্ট হয়)
function functionDisplayTwo() {
console.log("Hello!");
}
পার্থক্য সারসংক্ষেপ
| বিষয় | ফাংশন ডিক্লেয়ারেশন | ফাংশন এক্সপ্রেশন |
|---|---|---|
| হোইস্টিং | পুরো ফাংশন হোইস্ট হয় | শুধু ভেরিয়েবল হোইস্ট হয় (undefined) |
| কল করার সময় | ডিক্লেয়ারেশনের আগেও কল করা যায় | ডিক্লেয়ারেশনের পরেই কল করা যায় |
| নাম | নামযুক্ত (named) | অ্যানোনিমাস (নাম থাকে না) |
| স্ট্রিক্ট মোড | ব্লক স্কোপে অনুমোদিত | সব জায়গায় অনুমোদিত |
আধুনিক সেরা অনুশীলন
// Arrow function (ES6+) - সংক্ষিপ্ত, লেক্সিক্যাল this
const myFunc = () => {
console.log("Hello!");
};
// Named function expression (স্ট্যাক ট্রেসে নাম দেখাবে)
const myFunc = function myFuncName() {
console.log("Hello!");
};