اگر وقت کنم چیزایی که یاد گرفتم رو می نویسم
مفهوم 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
مطلبی دیگر از این انتشارات
Event Capturing و Event Bubbling در جاوااسکریپت
مطلبی دیگر از این انتشارات
فلاکس چیست و با ریداکس چه تفاوتی دارد؟