| کانال توسعهدهندگان جاوااسکریپت |
Kanalga Telegram’da o‘tish
⭕️ کانال توسعهدهندگان جاوااسکریپت دولوپیکس 💠 دولوپیکس | جامعه توسعهدهندگان ایرانی 💎 @Developix 🚀 Developix.ir 📌 پشتیبانی و تبلیغات: @DevelopixSupport
Ko'proq ko'rsatish3 758
Obunachilar
Ma'lumot yo'q24 soatlar
-17 kunlar
-4930 kunlar
Postlar arxiv
🌀 معرفی Hoisting 🌀
🔸 توی پست قبل کمی در مورد Hoisting صحبت کردیم اما تو این پست میخوام یه توضیح کاملی در موردش بدم که ببینیم چی هست و چیکار میکنه.
🔹 جاوااسکریپت وقتی کد ما رو دریافت میکنه اولین کاری که میکنه راهاندازی حافظه هستش. میاد و متغیرها و توابعمون رو ذخیره میکنه. ولی خب ذخیره این دوتا کمی متفاوته که در ادامه توضیح میدم.
🔸جاوااسکریپت توابع رو به صورت کامل و با آدرسدهی کل تابع میاد و ذخیره میکنه.
🔹 اما در مورد متغیرها این مسئله متفاوته، متغیرهایی که با کلمه کلیدی var تعریف میشوند رو با مقدار undefined ذخیره میکنه و زمان اجرای کد وقتی به جایی که اون رو تعریف کردید میرسه، مقدارش رو بازنویسی میکنه. احتمالاً قبلا با این مسئله روبرو شدید که قبل از تعریف کردن var میخواستید که به مقدارش دسترسی داشته باشید ولی بهتون undefined میداده، دلیلش همینه.
🔸 اما در es6 دو تعریف جدید برای متغیرها معرفی شد که let و const بودن. جاوااسکریپت این متغیرها رو توی همون مرحله راهاندازی حافظه به صورت uninitialized ذخیره میکنه. برای جلوگیری از مشکلات، زمانی که بخواهید قبل از تعریف شدن به متغیرهایی که با let و const تعریف شدن دسترسی پیدا کنید ارور RefrenceError میگیرید. به همین دلیل هم بود که توی کوییز قبلی ما موقعی که میخواستیم به تابع writeHello دسترسی داشته باشیم ارور RefrenceError رو میگرفتیم.
👤 MHReza
💎 Channel: @DevelopixJavascript
🔸پاسخ این هست که ابتدا عبارت developix چاپ میشه ولی در خط بعدی ما ReferenceError میگیریم.
🔹دلیل این اتفاق هم این هست که ما در جاوااسکریپت ویژگیای داریم به نام Hoisting که همه تعاریف مربوط به متغیرها و توابع رو به بالای کدمون میبره (درواقع عملکردش به این صورت نیست ولی خب توی این پست نمیگنجه که کامل توضیح بدم پس بعداً توی یه پست دیگه کامل در موردش توضیح میدم.) و به همین دلیل هست که میتونیم به فانکشن sayDevelopix دسترسی داشته باشیم قبل از تعریف شدنش.
🔸ولی این قضیه کمی متفاوته در مورد arrow function ها که توضیح کامل رو توی پست بعد بهتون میدم ولی تا اینجا فقط بدونید که قبل از تعریف شدنشون نمیتونیم بهشون دسترسی داشته باشیم.
👤 MHReza
💎 Channel: @DevelopixJavascript
با اجرای این کد چه اتفاقی خواهد افتاد؟
دلیلش رو توضیح بدین.
#questions
👤 MHReza
💎 Channel: @DevelopixJavascript
🔸احتمالاً توی پروژتون نیاز به این داشتید که اعداد انگلیسی رو تبدیل به اعداد فارسی کنید.
🔹با تکه کد زیر میتونید این کار رو توی جاوااسکریپت انجام بدید.
const numberFormatter = new Intl.NumberFormat('fa');
console.log(numberFormatter.format('9'));
🔸فقط دقت کنید که خروجیای که بهتون برمیگردونه string هست و نمیتونید اون رو هم تبدیل به عدد بکنید.
#Tips
👤 MHReza
💎 Channel: @DevelopixJavascript
