Hoisting در جاوا اسکریپت چیست؟

تصور کنید برای یک نمایش جادویی آماده می شوید. قبل از شروع، شعبده باز تمام مواردی را که روی صحنه استفاده خواهد کرد، مرتب می کند و کارت ها، خرگوش ها و کلاه را در جای مناسب قرار می دهد. این به او کمک می کند تا ترفندها را بدون در هم ریختگی انجام دهد.
در جاوا اسکریپت، زمانی که کد خود را می نویسید، چیزی مشابه اتفاق می افتد. “جادوگر”، در این مورد، جاوا اسکریپت است که برخی از چیزها را قبل از شروع اجرای برنامه سازماندهی می کند. این سازمان خودکار نامیده می شود بالا بردن.
بالابر چگونه کار می کند؟
-
تنظیمات اول:
جاوا اسکریپت همه چیز را می گیرد بیانیه ها از متغیرها و توابع و “بالا” آنها به بالای کد. انگار گفت: قبل از شروع، همه چیزهای مهم را جدا می کنم تا گم نشوم. -
مهم:
فقط بیانیه ها به بالا منتقل می شوند، نه مقادیر اختصاص داده شده. مثل این است که می گویید “هی، این کلاه جادویی وجود دارد!”، اما جاوا اسکریپت فقط متوجه می شود به عنوان هنگامی که در زمان مناسب در کد وارد شدید، کلاه بالایی بپوشید.
یک مثال ساده
این کد را ببینید:
console.log(meuNome); // undefined
var meuNome = "Jonas";
console.log(meuNome); // Jonas
در ابتدا عجیب به نظر می رسد: جاوا اسکریپت از کجا این را می داند meuNome
قبل از اینکه من آن را اعلام کنم وجود دارد؟
این اتفاق می افتد زیرا در پشت صحنه چنین کاری انجام می دهد:
var meuNome; // Declaração "subiu"
console.log(meuNome); // undefined
meuNome = "Jonas"; // Valor atribuído
console.log(meuNome); // Jonas
به عبارت دیگر، اعلان متغیر را اضافه می کند myname، اما فقط مقدار را اختصاص می دهد “یوناس” در جای مناسب
Hoisting com اجازه دهید ه پایان
حالا یک تفاوت مهم وجود دارد: اگر استفاده می کنید اجازه دهید یا پایان، o جاوا اسکریپت به شما اجازه نمی دهد قبل از اعلان از متغیرها استفاده کنید.
فقط نگاه کن:
console.log(idade); // Erro: Cannot access 'idade' before initialization
let idade = 14;
این اتفاق می افتد زیرا اجازه دهید ه پایان آنها در یک منطقه خاص “ذخیره” می شوند و فقط پس از اعلام آنها می توانند استفاده شوند.
بالابر با توابع
توابع در جاوا اسکریپت نیز “برداشته می شوند”. این مثال را ببینید:
cumprimentar();
function cumprimentar() {
console.log("Olá!");
}
حتی فراخوانی تابع قبل از اعلام، کار می کند! این به این دلیل است که جاوا اسکریپت کل تابع را به بالای کد “بالا می برد”.
نتیجه گیری
Hoisting به این صورت است که گویی جاوا اسکریپت یک جادوگر فوق العاده سازمان یافته است: قبل از شروع به اجرا کردن کد شما، نگاهی گذرا به کد شما می اندازد، همه اعلان های متغیر و تابع را از هم جدا می کند و تنها پس از آن نمایش شروع می شود.
اما به یاد داشته باشید: با قدرت زیاد، مسئولیت بزرگی به همراه دارد. استفاده از بالابر بدون درک آن می تواند باعث سردرگمی شود. بنابراین، متغیرها و توابع خود را با دقت اعلام کنید تا کد شما واضح تر و منظم تر شود!