بفرست برای دوستات :
آموزش جاوا اسکریپت از مبتدی تا حرفه ای

درس امروز از مجموعه آموزش جاوا اسکریپت در بانک پروژه درباره عمل Hoisting در جاوا اسکریپت است که در ادامه بیشتر درباره آن توضیح خواهیم داد.

جاوا اسکریپت به طور پیش فرض تعاریف را به بالای دیگر کد ها در هر دامنه (scope) منتقل می کند. یعنی اگر در یک تابع متغیر یا متغیرهایی تعریف شوند، این تعاریف به بالاترین مکان در آن تابع منتقل می شوند. به این کار hoisting در جاوا اسکریپت یا بالابردن می گویند.


تعاریف بالا می روند

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

به عبارت دیگر؛ یک متغیر را می توانیم قبل از اینکه تعریف شود، استفاده کنیم.

هر دو مثال زیر یک نتیجه دارند :

مثال

خودتان آزمایش کنید

مثال

خودتان آزمایش کنید

برای درک این موضوع ، باید اصطلاح “hoisting” را درک کنید.

hoisting رفتار پیش فرض جاوا اسکریپت در انتقال همه تعاریف به بالای دامنه فعلی (به بالای اسکریپت فعلی یا تابع فعلی) است.


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

متغیرها و ثابت های اعلام شده با let یا const hoisting نمی شوند!

اطلاعات بیشتر در مورد let و const را در JS Let/Const بخوانید .



مقدار دهی اولیه Hoisting نمی شود

جاوا اسکریپت فقط تعاریف را بالا می برد ، نه مقداردهی اولیه را.

نتیجه مثال 1 با نتیجه مثال 2 ، یکسان نیست

مثال

خودتان آزمایش کنید

مثال

خودتان آزمایش کنید

آیا این بدان معنیست که y در مثال آخر تعریف نشده است؟

دلیل این امر این است که فقط تعریف (var y) به بالا می رود، نه مقدار دهی اولیه (= 7) .

به دلیل hoisting (بالا رفتن)، y قبل از استفاده تعریف شده است ، اما از آنجا که مقدار دهی اولیه بالا نمی رود، مقدار y تعریف نشده است.

مثال 2 را می توان اینگونه نیز نوشت:

مثال

خودتان آزمایش کنید

همیشه متغیرهای خود را در بالا تعریف کنید!

بالا بردن یا hoisting (برای بسیاری از توسعه دهندگان) یک رفتار ناشناخته یا نادیده گرفته از جاوا اسکریپت است.

اگر یک توسعه دهنده رفتار hoisting در جاوا اسکریپت را نفهمد ، ممکن است برنامه هایش دچار اشکال (خطا) شوند.

برای جلوگیری از اشکالات ، همیشه همه متغیرها را در ابتدای هر دامنه تعریف کنید.

از آنجا که جاوا اسکریپت کد را اینگونه تفسیر می کند ، “تعریف متغیر ها در ابتدای هر دامنه” همیشه یک قانون خوب است.

جاوا اسکریپت در حالت سخت اجازه نمی دهد که در صورت عدم تعریف، از متغیرها استفاده شود.
در درس بعد “حالت سختگیرانه” را مطالعه کنید.

منبع : W3Schools.com


دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *