Ninja Learn | نینجا لرن
1.26K subscribers
105 photos
41 videos
12 files
326 links
یادگیری برنامه نویسی به سبک نینجا 🥷
اینجا چیزایی یاد میگیری که فقط نینجاهای وب‌ بلدن 🤫

📄 Send me post: https://t.iss.one/NoronChat_bot?start=sec-fdggghgebe

👥 ɢʀᴏᴜᴘ: https://t.iss.one/+td1EcO_YfSphNTlk
Download Telegram
💎 موتور جاوااسکریپت (engine) 💎

امروز می‌خوایم بریم سراغ دو تا از مهم‌ترین مفاهیم در متور جاوا اسکریپت: Call Stack و Memory Heap. که کدای ما توی این دوتا بخش اجرا میشه.

🤔 حالا Call Stack چیه؟
تصور کنید چندتا بشقاب روی هم داریم. هر وقت یه تابع جدید صدا می‌زنیم، یه بشقاب جدید روی بشقابای قبلی میذاریم. وقتی کار تابع تموم شد، بشقاب رو برمی‌داریم. این روند همون Call Stack ماست.

چرا این مهمه؟
چون جاوا اسکریپت تک رشته ای هست (single thread) هست، یعنی هر بار فقط یه کار رو انجام میده. Call Stack به جاوا اسکریپت کمک می‌کنه بفهمه کدوم تابع باید بعد از تابع قبلی اجرا بشه.

🧐 حالا Execution Context درون call stack چیه؟
هر بار که یه تابع اجرا میشه، یه Execution Context جدید ایجاد میشه که به call stack اضافه میشه. این Context شامل دو بخش اصلی هست:

🗂Variable Environment:
جایی که متغیرهای محیطی تابع ها ذخیره میشن.
🌳Scope Chain:
زنجیره‌ای از اشیاء است که برای پیدا کردن مقدار متغیرها استفاده میشه.
حالا Scope Chain چیه؟ ⛓️
تصور کن یه درخت خانوادگی داریم. هر متغیری یه فرزند از نسل قبلی هست. Scope Chain به ما کمک می‌کنه تا از پایین به بالا در این درخت جستجو کنیم و مقدار متغیرها رو پیدا کنیم.

حالا کلمه کلیدی This چیه؟
این کلمه کلیدی به شیء جاری اشاره می‌کنه. اما مقدار دقیقش به نحوه فراخوانی تابع بستگی داره. مثلا وقتی یه تابع به عنوان متد یک شیء فراخوانی میشه، this به اون شیء اشاره می‌کنه.

حالا Memory Heap چیه؟
حالا بیایم سراغ Memory Heap. این قسمت مثل یه انبار بزرگه که همه داده‌های برنامه توش ذخیره میشه. اشیاء، آرایه‌ها و توابع همه در Heap قرار می‌گیرن.

تفاوت Call Stack و Memory Heap چیه؟

Call Stack:
برای اجرای کد استفاده میشه و بر اساس
اصل LIFO (Last In, First Out) کار می‌کنه.
Memory Heap:
برای ذخیره داده‌ها استفاده میشه و حافظه به صورت پویا تخصیص داده میشه.
جمع‌بندی
فهمیدیم Call Stack و Memory Heap دو مفهوم اساسی در جاوا اسکریپت هستن که درک عمیقشون برای نوشتن کدهای کارآمد و عیب‌یابی بسیار مهمه.


#جاوااسکریپت #callstack #memoryheap #executioncontext #scope #this
@ninja_learn_ir
👍152