بنابراین شما فکر می کنید که Loops را می شناسید؟

بنابراین شما مدتی است که جاوا اسکریپت را یاد می گیرید. شاید شما چندین برنامه نوشته اید و ده ها مشکل را در Code Wars حل کرده اید؟ یا شاید شما فقط در حال انجام برخی آموزشها و دورههای آموزشی هستید، یا حتی تازه شروع به خیس شدن پاهای خود کردهاید؟ من به شما اطمینان می دهم، اگر تمام حلقه های for خود را مانند این نوشته اید:
for (let i = 0; i < n; i++) {
}
شما فقط سطح پتانسیل حلقه های for را می خراشید.
در طول سفر برنامه نویسی، من اتاق وزن را کشف کردم که بزرگترین انتقال فلسفی به برنامه نویسی را دارد. هیچ کس در اتاق وزن باور نمی کند که با انجام انحصاری نیمکت هالتر تخت، یک نیمکت کامل داشته باشد. در اتاق وزنه، یاد می گیرید که از زوایای مختلف به عضله ضربه بزنید و قدرت را در چندین سطح حرکتی مختلف توسعه دهید. با این حال، در برنامه نویسی، بسیاری از آموزش ها و منابع فقط از دیدگاه یک بعدی، معادل برنامه نویسی انجام انحصاری نیمکت هالتر مسطح را آموزش می دهند. آیا تعجبی ندارد که مردم در جهنم آموزشی گیر کنند، وقتی که آموزش ها از زوایای و دیدگاه های مختلف به یادگیری نزدیک نمی شوند؟ به همین دلیل است که فکر میکنم مهم است که از زاویهای کاملاً متفاوت به حلقه for نزدیک شویم، دیدگاهی در مورد پتانسیل واقعی آن ایجاد کنیم، و درک عمیقتری از نحوه کار جاوا اسکریپت ایجاد کنیم.
من برای این پست از فصل 5 کتاب جاوا اسکریپت Eloquent اثر Marijin Haverbeke الهام گرفتم. این به من کمک کرد تا حلقهها را در منظری کاملاً متفاوت ببینم، دیدگاهی که هنوز در هیچ آموزش یا دوره آموزشی جاوا اسکریپت ندیدهام. و من قصد دارم آن را با جزئیات بیشتر از خود کتاب تجزیه کنم. بنابراین نوشیدنی مورد علاقه خود را بگیرید و محکم بچسبید، این نوشیدنی شما را به یک حلقه می برد!
حلقه for در این مثال یک مقدار شروع می گیرد، یک تابع تست (عبارت شرطی) که اگر درست باشد، تابع بدنه را فراخوانی می کند و مقدار تکرار شده فعلی (مقدار i) را به تابع بدنه می دهد، که متعاقباً تابع به روز رسانی را با آن فراخوانی می کند. مقدار i، به روز رسانی مقدار حلقه. فقط در متن، این به نظر کاملاً پیچیده و گیج کننده است، بنابراین بیایید نگاهی به کد بیندازیم.
`const loop = (value, testFunction, updateFunction, bodyFunction) => {
برای (بگذارید i = مقدار؛ testFunction(i)؛ i =updateFunction(i)){
عملکرد بدن (i)
}
}
حلقه (3، n => n > 0؛ n => n – 1، console.log)
`
برای اینکه بفهمیم اینجا چه خبر است، باید به آرگومان هایی که به تابع حلقه منتقل می شوند نگاهی بیندازیم. مقدار ارسال شده 3، n => n > 0 = testFunction، n – 1 = updateFunction، و console.log = bodyFunction است. این معمولاً به صورت زیر نوشته می شود:
`برای (بگذارید i = 3; i > 0; i–) {
console.log(i)
}`
اما اگر به این شکل نوشته می شد، قدرت جاوا اسکریپت را از دست می داد: می توانید مقادیر را مستقیماً به عنوان آرگومان به فراخوانی تابع ارسال کنید بدون اینکه لازم باشد ابتدا آنها را به عنوان متغیر اعلام کنید! این امکان کنترل دقیقتر و سفارشیشده حلقه را از طریق توابع پاسخ به تماس فراهم میکند! در حالی که در بیشتر موارد استفاده، با استفاده از یک تکرار کننده نمونه سنتی (بگذارید i = درج مقدار) بهترین حالت خواهد بود، ممکن است موارد استفاده ای وجود داشته باشد که فرد بخواهد رفتار حلقه ها را از طریق توابع برگشت به تماس کنترل کند. با انتقال مستقیم مقادیر به عنوان فراخوانی تابع، امکان نوشتن کد بیشتر با اصول DRY را فراهم می کند و در نتیجه تکرار را حذف می کند اگر مقادیر در جای دیگری با let یا const اعلام می شدند. علاوه بر این، این مثال قدرت و انعطافپذیری جاوا اسکریپت را نشان میدهد که هرگز در آموزشها یا دورهها هنگام آموزش حلقهها نشان داده نمیشود. برای نوشتن کد خوب و مطابق با استانداردهای برنامه نویسی تابعی، درک اینکه چگونه توابع و مقادیر می توانند به عنوان آرگومان منتقل شوند، کلیدی است، به خصوص زمانی که چندین تابع مرتبه بالاتر را به هم متصل می کنیم، که یک روش معمول در چارچوب React است.
بنابراین یک لحظه وقت بگذارید و با مثال کد آزمایش کنید، مقادیر را تغییر دهید، و عمیق تر بگردید تا درک بیشتری از حلقه for ایجاد کنید. من شما را تشویق میکنم که با نوشتن حلقهها به این روش، مشکلات دیگر را حل کنید، این کار بعداً در سفر برنامهنویسیتان، زمانی که توابع برگشت تماس بیشتری را برای حل مشکلات بنویسید، سود بیشتری خواهد داشت.