دوستان سلام این Hoisting قصه ما خیلی اسمش بزرگه ولی خودش هیچی نیست بریم ببینیم چی هس اصلا این کد ها رو در نظر بگیرید و این قطعه کد رو: فرق این ارور ها چیه؟ اولیش a کلا وجود نداره و کلا ReferenceError می ده و توضیح می ده که متغیر یا ثابتی به اسم a وجود نداره ولی توی مورد دوم a وجود داره ولی مقدارش undefined یعنی مقدار دهی نشده برنامه ارور نمی ده و توی کنسول مقدار undefined چاپ می شه خب حالا Hoisting چیه؟ باز می خوام مثال بزنم این تیکه کد رو در نظر بگیرید: اگر کد های جاوا اسکریپت دقیقا خط به خط کامپایل و اجرا بشن توقع داریم مثل مورد اول با ReferenceError مواجه بشیم و کد اجرا نشه و به ارور بخوره ولی نمی خوره: ) و مقدار برابر با undefined می شه چرا؟ می دونیم که کد های جاوا اسکریپت یک بار کامپایل و سپس اجرا می شن تعریف متغییر ها حین کامپایل اتفاق می افته و مقدار دهی به متغییر ها حین اجرا یعنی چی؟ یعنی کامپیوتر کد های بالا رو به این صورت می بینیه بخاطر همینه که ارور نمی ده و مقدار undefined می شه معنی Hoisting یعنی بالا کشیدن اگر دقت کنید تعریف متغییر ها به بالای برنامه کشیده شد آقا داود امیدوارم مفید باشه: )