٪۴۰ تخفیف تابستانه شروع شد! بزرگترین حراج سال ما

به ما بپیوندید

آموزش JavaScript Hoisting

Hoisting رفتار پیش فرض JavaScript در انتقال اعلان ها به بالا است. اعلامیه های جاوا اسکریپت مرتفع می شوند در جاوا اسکریپت ، یک متغیر را می توان بعد از استفاده اعلام کرد. به عبارت دیگر؛ یک متغیر می تواند قبل…

محمد یوسفی

23 جولای 2021

Hoisting رفتار پیش فرض JavaScript در انتقال اعلان ها به بالا است.


اعلامیه های جاوا اسکریپت مرتفع می شوند

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

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

مثال 1 همان نتیجه 2 را می دهد :

مثال 1

x = 5; // Assign 5 to x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;                     // Display x in the element

var x; // Declare x

مثال 2

var x; // Declare x
x = 5; // Assign 5 to x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;                     // Display x in the element

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

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


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

متغیرهایی که در بالای بلوک تعریف شده letو constبرداشته می شوند ، اما مقداردهی اولیه نمی شوند .

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

استفاده از یک letمتغیر قبل از اعلام آن منجر به a ReferenceError.

متغیر از ابتدای بلوک تا زمانی که اعلام شود در یک “منطقه مرده زمانی” قرار دارد:

مثال

نتیجه این امر ReferenceError:

carName = "Volvo";
let carName;

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

مثال

این کد اجرا نمی شود

carName = "Volvo";
const carName;


اولیه سازی جاوا اسکریپت مرتفع نیست

JavaScript فقط اعلامیه ها را بلند می کند ، نه مقادیر اولیه را.

مثال 1 همان نتیجه 2 را نمی دهد :

مثال 1

var x = 5; // Initialize x
var y = 7; // Initialize y

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y

مثال 2

var x = 5; // Initialize x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y

var y = 7; // Initialize y

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

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

به دلیل بالا بردن ، y قبل از استفاده اعلام شده است ، اما چون مقداردهی اولیه انجام نمی شود ، مقدار y تعریف نشده است.

مثال 2 همان نوشتن است:

مثال

var x = 5; // Initialize x
var y;     // Declare y

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y

y = 7;    // Assign 7 to y

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

Hoisting (برای بسیاری از توسعه دهندگان) رفتاری ناشناخته یا نادیده گرفته شده از JavaScript است.

اگر یک توسعه دهنده بلند کردن را درک نکند ، ممکن است برنامه ها حاوی اشکال (خطا) باشند.

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

از آنجا که JavaScript کد را به این ترتیب تفسیر می کند ، همیشه یک قانون خوب است.

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

منبع

مطالب مرتبط

0 0 رای ها
امتیازدهی به مقاله
اشتراک در
اطلاع از
guest
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها