Udemy24 Logo Liight

رفتار Hoisting در جاوا اسکریپت

رفتار Hoisting در جاوا اسکریپت

در کدنویسی جاوا اسکریپت، می‌توان یک متغیر را بعد از آنکه مورد استفاده قرار گرفت، تعریف کرد. به عبارت دیگر، می‌توان از یک متغیر قبل از تعریف کردن، استفاده کرد.

مثال اول و دوم نتیجه یکسانی دارند.

مثال اول:

مثال دوم:

برای درک این مثال‌ها شما باید اصطلاح Hoisting را درک کنید.
Hoisting رفتار پیش‌فرض از حرکت دادن تمام تعاریف به بالای محدوده فعلی (به بالای اسکریپت فعلی یا تابع فعلی) است.

کلمات کلیدی let  و const

در زبان جاوا اسکریپت، متغیرها و ثابت‌ها (constants) که با کلمه کلیدی let یا const تعریف می‌شوند، hoist نیستند.

مقداردهی‌ها (Initializations) در جاوا اسکریپت Hoist نیستند

جاوا اسکریپت فقط تعاریف Hoist را نشان می‌دهد، نه مقداردهی را.

مثال اول و دوم نتیجه یکسانی ندارند.

مثال اول:

مثال دوم:

آیا منطقی به نظر می‌رسد که y در آخرین مثال تعریف نشده است؟
این به این دلیل است که فقط تعاریف  (var y)، نه مقداردهی اولیه (۷=) به بالا کشیده می‌شود.
به علت بالا کشیدن، y قبل از استفاده تعریف شده است، اما چون مقداردهی بالا کشیده نشده است، مقدار y تعریف نشده است.

مثال دوم را می‌توان به صورت زیر نوشت:

تعریف کردن متغیر شما در بالا

Hoisting (برای بسیاری از توسعه دهندگان) یک رفتار ناشناخته یا نادیده گرفته شده از جاوا اسکریپت است.
اگر یک توسعه دهنده Hoist را درک نکند، برنامه‌ها ممکن است با خطا مواجه شوند.
برای اجتناب از بروز خطاها، همواره تمام متغیرها را در ابتدای هر محدوده تعریف کنید.

جاوا اسکریپت در حالت strict اجازه نمی‌دهد که متغیرهای مورد استفاده در صورت تعریف نشدن، استفاده شوند.

فهرست