اگر وقت کنم چیزایی که یاد گرفتم رو می نویسم
مفهوم Hoisting در جاوا اسکریپت
دوستان سلام
این Hoisting قصه ما خیلی اسمش بزرگه ولی خودش هیچی نیست بریم ببینیم چی هس اصلا
این کد ها رو در نظر بگیرید
console.log(a);
// output : ReferenceError : a is not defined
و این قطعه کد رو :
var a;
console.log(a);
//output : undefined
فرق این ارور ها چیه ؟
اولیش a کلا وجود نداره و کلا ReferenceError می ده و توضیح می ده که متغیر یا ثابتی به اسم a وجود نداره
ولی توی مورد دوم a وجود داره ولی مقدارش undefined یعنی مقدار دهی نشده برنامه ارور نمی ده و توی کنسول مقدار undefined چاپ می شه
خب حالا Hoisting چیه ؟
باز می خوام مثال بزنم این تیکه کد رو در نظر بگیرید :
console.log(a);
var a = 40;
// output : undefined
اگر کد های جاوا اسکریپت دقیقا خط به خط کامپایل و اجرا بشن توقع داریم مثل مورد اول با ReferenceError مواجه بشیم و کد اجرا نشه و به ارور بخوره ولی نمی خوره :) و مقدار برابر با undefined می شه چرا ؟
می دونیم که کد های جاوا اسکریپت یک بار کامپایل و سپس اجرا می شن
تعریف متغییر ها حین کامپایل اتفاق می افته و مقدار دهی به متغییر ها حین اجرا یعنی چی ؟
یعنی کامپیوتر کد های بالا رو به این صورت می بینیه
var a;
console.log(a);
a = 40;
بخاطر همینه که ارور نمی ده و مقدار undefined می شه
معنی Hoisting یعنی بالا کشیدن اگر دقت کنید تعریف متغییر ها به بالای برنامه کشیده شد
آقا داود
امیدوارم مفید باشه :)
مطلبی دیگر از این انتشارات
تفاوت بین var , let و const
مطلبی دیگر از این انتشارات
رفع مشکل صفحه سیاه در vsCode
مطلبی دیگر از این انتشارات
ایجاد پیش نمایش لینک در شبکه های مجازی