فر تابع "Expression" و "Declaration" در جاوا اسکریپت چیه ؟
فر تابع
"Expression" و "Declaration"
در جاوا اسکریپت چیه ؟
١ پاسخ
در جاوا اسکریپت، تفاوتهای مهمی بین تابع (Function) Declaration و تابع (Function) Expression وجود دارد. در ادامه، این تفاوتها را توضیح میدهم:
۱. Function Declaration (اعلام تابع)
یک تابع با استفاده از Function Declaration به این شکل تعریف میشود:
function greet() {
console.log("Hello, world!");
}
ویژگیهای مهم:
تابع از قبل به جاوا اسکریپت شناسانده میشود، بنابراین میتوانید قبل از تعریف تابع از آن استفاده کنید.
در زمان hoisting (بلند کردن)، کد تابع به بالای scope منتقل میشود. به این معنی که شما میتوانید تابع را قبل از خطی که آن را تعریف کردهاید، فراخوانی کنید.
مثال:
greet(); // کار میکند، حتی قبل از تعریف تابع
function greet() {
console.log("Hello!");
}
۲. Function Expression (عبارت تابع)
یک تابع با استفاده از Function Expression به این صورت تعریف میشود:
const greet = function() {
console.log("Hello, world!");
};
ویژگیهای مهم:
تابع به یک متغیر اختصاص داده میشود. بنابراین، تابع تنها از زمانی که متغیر تعریف شده قابل دسترسی است.
برخلاف تابع Declaration، توابع Expression در زمان hoisting فقط متغیرشان بلند میشوند و نمیتوانید قبل از تعریف از آن استفاده کنید.
مثال:
greet(); // خطا میدهد، چون تابع قبل از تعریف قابل دسترسی نیست
const greet = function() {
console.log("Hello!");
};