مجتبی افراز | Mojtaba Afraz
مجتبی افراز | Mojtaba Afraz
خواندن ۲ دقیقه·۳ سال پیش

Call Stack در JavaScript

Call Stack In JavaScript
Call Stack In JavaScript

بزار ببینم ساعت چنده !؟
اوپس ، ساعت 4 صبحه


مدتی هست که دارم یکم روی مباحث جاوااسکریپت عمیق تر میشم،با موارد و Tip های جالبی آشنا شدم
یکی از مباحث ساختاری که به نظرم هر برنامه نویس جاوااسکریپت باید بدونه(و معتقدم خودم قبل از فهمیدنش تباه بودم) این آقای Call Stack هست

خب،حالا چی هست اصلا!؟ بچه کجاست !؟ چیکار میکنه !؟

تا حالا به این فکر کردید تابع هایی که مینویسیم چطور اجرا میشن !؟ ، مرورگر یا موتور اجرا کننده چطوری بهش نگاه می کنند و بعد اجرا میکنند !؟

یکی از ویژگی های جاوااسکریپت اینه که در یک لحظه فقط میتونه یک کار رو انجام بده،پس باید یه ترتیبی برای انجام دادن دونه به دونه کار هاش داشته باشه

ممکنه خیلی ها این نوع تعریف من رو قبول نداشته باشن،اما بیاید سختش نکنیم،همه چیز به وقتش

قرار نیست تو عمق هم عمیق بشیم(جواد خیابانی)
call Stack تو تعریف خیلی ساده یه لیستی هست که موتور های جاوااسکریپت برای خودشون دارن که مربوط به ترتیب اجرا شدن توابع ما میشه

بزار یکم بیشتر توضیح بدم،این کد رو نگاه کن

function one() { console.log(&quotone&quot); }; function two() { one(); console.log(&quottwo&quot); }; two();

بیاید ببینیم ارتباط این کدمون با Call Stack چه شکلی هستش . . .

همونطور که معلومه توی کدمون دوتا تابع داریم => "one" & "two"

بعد از تعریف این تابع ها ما اومدیم تابع دوم رو صدا زدیم، پس با توجه به صدا کردن این تابع،باید بیاد و بره تو استکمون

حالا Call Stack ما این شکلی میشه

خب،بعد از صدا زدن تابع two اومد تو لیست call Stack ما قرار گرفت،پس برنامه باید بره سراغ این تابع تا اجراش کنه

ما توی تابع two تابع one رو صدا زدیم،پس باز هم اینجا تابع one باید بیاد تو لیست زیبامون :)

حالا یه همچین لیستی از توابعی که باید اجرا بشن داریم . . .


نکته : ترتیب لیست شدن توابع از پایین به بالا و ترتیب اجرا آنها از بالا به پایین است


خیلی ساده،الان توابع ما اجرا میشن

تابع one بعد از تمام کارش(چاپ کردن مقدار "one") از Call Stack خارج میشه

حالا نوبت به تابع two میرسه . . .

که اونم با چاپ کردن مقدار "two" از stack خارج میشه

پس حالا stack ما خالیه :)

نکته : به هر کدوم از ایتم هایی که وارد call stack میشن میگن یک "frame"


اگر درباره call stack خونده باشید یا شنیده باشید،حتما چیزی به نام eventLoop رو هم شنیدید یا خوندید
حالا اینکه اون دیگه چیه و کجای داستان قرار میگیره رو تو پست بعدی براتون مینویسم


ممنونم از اینکه تا اینجا رو بودی

call stackcallstackjsjavascriptprogramming
Dynamic and creative software developer with years of experience in generating strong code for companies. With first-class coding skills. As well as active and interested in startups
شاید از این پست‌ها خوشتان بیاید