একটি ডিক্লারেশন একটি নামকৃত ফাংশন স্টেটমেন্ট; একটি এক্সপ্রেশন একটি ভেরিয়েবলের কাছে একটি ফাংশন নির্ধারণ করে। ব্যবহারিক পার্থক্য হল hoisting।
js
();
() { ; }
();
expressed = () { ; };
একটি ডিক্লারেশন একটি নামকৃত ফাংশন স্টেটমেন্ট; একটি এক্সপ্রেশন একটি ভেরিয়েবলের কাছে একটি ফাংশন নির্ধারণ করে। ব্যবহারিক পার্থক্য হল hoisting।
();
() { ; }
();
expressed = () { ; };
ফাংশন ডিক্লারেশনগুলি তাদের বডিসহ hoisted হয়, তাই সম্পূর্ণ ফাংশন এক্সিকিউশন পৌঁছানোর আগে বিদ্যমান থাকে। একটি ফাংশন এক্সপ্রেশন শুধুমাত্র একটি ভেরিয়েবলের কাছে নির্ধারিত একটি মান — প্রাথমিক কলের পয়েন্টে, expressed এখনও undefined থাকে (var সহ) অথবা TDZ-তে থাকে (let/const সহ)।
// expression — for callbacks, conditional definitions, arrow functions
const handler = () => doThing();
const fn = condition ? a : b;
arr.map(x => x * 2);
// declaration — clear, hoisted top-level functions
function calculateTotal(items) { ... }
ডিক্লারেশনগুলি টপ-লেভেল নামকৃত ফাংশনের জন্য ভালো পড়া যায় এবং hoisting থেকে উপকৃত হয় (আপনি তাদের ব্যবহারের পরে সংজ্ঞায়িত করতে পারেন)। এক্সপ্রেশনগুলি arrow ফাংশন, callbacks, IIFEs, এবং শর্তসাপেক্ষে ফাংশন নির্ধারণের জন্য প্রয়োজনীয়। Arrow ফাংশনগুলি সর্বদা এক্সপ্রেশন।