تقریباً همه برنامهنویسهای JavaScript حداقل یکبار با این سؤال روبهرو شدهاند:
چرا
خیلیها اسم این رفتار را Hoisting میگذارند، اما واقعیت این است که Hoisting به معنی جابهجا شدن خطوط کد نیست.
این رفتار نتیجه مرحله Creation Phase در Execution Context است؛ جایی که موتور JavaScript قبل از اجرای برنامه، متغیرها و توابع را در حافظه ثبت میکند.
توی این مقاله سعی کردم Hoisting را از دید موتور JavaScript بررسی کنم، نه فقط از دید خروجی چند مثال.
اگر میخواهید رفتار واقعی موتور JavaScript را بهتر درک کنید و هنگام Debug کردن کدها کمتر غافلگیر شوید، این مقاله میتواند دید عمیقتری به شما بدهد.
🔗 مطالعه مقاله:
https://cafeamoozesh.com/javascript-hoisting-tutorial
#JavaScript #Hoisting #Frontend #SoftwareEngineering #NodeJS #CafeAmoozesh
چرا
var قبل از تعریف مقدار undefined برمیگرداند، اما let و const خطا میدهند؟ یا چرا بعضی توابع قبل از تعریف هم اجرا میشوند؟خیلیها اسم این رفتار را Hoisting میگذارند، اما واقعیت این است که Hoisting به معنی جابهجا شدن خطوط کد نیست.
این رفتار نتیجه مرحله Creation Phase در Execution Context است؛ جایی که موتور JavaScript قبل از اجرای برنامه، متغیرها و توابع را در حافظه ثبت میکند.
توی این مقاله سعی کردم Hoisting را از دید موتور JavaScript بررسی کنم، نه فقط از دید خروجی چند مثال.
اگر میخواهید رفتار واقعی موتور JavaScript را بهتر درک کنید و هنگام Debug کردن کدها کمتر غافلگیر شوید، این مقاله میتواند دید عمیقتری به شما بدهد.
🔗 مطالعه مقاله:
https://cafeamoozesh.com/javascript-hoisting-tutorial
#JavaScript #Hoisting #Frontend #SoftwareEngineering #NodeJS #CafeAmoozesh