جاوا اسکریپت خوش زبان قسمت بیست و چهارم
مثال قبلی را به راهی برای ایجاد تبدیل کنیم
توابعی که در مقدار دلخواه ضرب می شوند.
ضریب تابع (ضریب) {
شماره بازگشت => عدد * فاکتور;
}
let double = ضرب (2);
console.log(twice(5));
// → 10
اتصال محلی صریح از مثال wrapValue واقعاً مورد نیاز نیست
از آنجایی که یک پارامتر خود یک اتصال محلی است.
فکر کردن در مورد برنامه هایی مانند این نیاز به تمرین دارد. یک مدل ذهنی خوب
این است که مقادیر توابع را به عنوان حاوی کد موجود در بدنه خود و هم در نظر بگیریم
محیطی که در آن ایجاد می شوند. هنگام فراخوانی، بدن تابع می بیند
محیطی که در آن ایجاد شده است، نه محیطی که در آن است
تماس گرفت.
در مثال، ضریب فراخوانی می شود و محیطی را ایجاد می کند که در آن است
پارامتر factor به 2 محدود می شود. مقدار تابعی که برمی گرداند و ذخیره می شود
در دو بار، این محیط را به یاد می آورد. بنابراین وقتی که نامیده می شود، آن را ضرب می کند
استدلال توسط 2.
بازگشت
تا زمانی که یک تابع خود را فراخوانی نکند، کاملاً اشکالی ندارد
اغلب که از پشته سرریز می شود. تابعی که خود را فراخوانی می کند بازگشتی نامیده می شود.
بازگشت به برخی از توابع اجازه می دهد تا به سبک متفاوت نوشته شوند. را برای
به عنوان مثال، این اجرای جایگزین قدرت:
توان تابع (پایه، توان) {
اگر (نما == 0) {
بازگشت 1;
}دیگر {
پایه بازگشتی * توان (پایه، توان – 1)؛
}
}
console.log(power(2, 3));
// → 8
این بسیار نزدیک به روشی است که ریاضیدانان قدرت و توان را تعریف می کنند
مسلماً مفهوم را واضح تر از نوع حلقه توصیف می کند. این
تابع چندین بار خود را با توانای کوچکتر فراخوانی می کند تا به آن برسد
ضرب مکرر
اما این پیاده سازی یک مشکل دارد: در پیاده سازی های معمولی جاوا اسکریپت، تقریباً سه برابر کندتر از نسخه حلقه است. گذر از میان
یک حلقه ساده معمولاً ارزانتر از چند بار فراخوانی یک تابع است.
معضل سرعت در مقابل ظرافت موضوع جالبی است. شما می توانید آن را به عنوان
نوعی تداوم بین انسان دوستی و دوستی با ماشین. تقریباً هر برنامه ای را می توان با بزرگتر و پیچیده تر ساختن آن سریعتر ساخت.
برنامه نویس باید در مورد تعادل مناسب تصمیم بگیرد.
در مورد تابع قدرت، نسخه بیظرافت (حلقهای) هنوز نسبتاً مناسب است
ساده و خواندنی جایگزین کردن آن با آن چندان منطقی نیست
نسخه بازگشتی با این حال، اغلب یک برنامه با چنین مفاهیم پیچیده ای سروکار دارد
اینکه دست از کارایی برای ساده تر کردن برنامه مفید است.
نگرانی در مورد کارایی می تواند باعث حواس پرتی شود. این یک عامل دیگر است که
طراحی برنامه را پیچیده می کند، و زمانی که شما در حال انجام کاری هستید که قبلاً انجام شده است
مشکل است، آن چیز اضافی برای نگرانی می تواند فلج کننده باشد.
بنابراین، همیشه با نوشتن چیزی که درست و قابل درک است شروع کنید. اگر نگران این هستید که خیلی کند است – که معمولاً از آن زمان اینطور نیست
اکثر کدها به سادگی به اندازه کافی اجرا نمی شوند که مقدار قابل توجهی مصرف کنند
زمان – می توانید بعد از آن اندازه گیری کنید و در صورت لزوم آن را بهبود بخشید.
49
قوانین ارسال دیدگاه در سایت