الدرس 3 من 8

حفظ نتائج الدالة

هدف الدرس

لا تحسب الشيء نفسه مرّتين

01

الشرح

إذا كانت الدالة نقيّة، أي أنها تعطي دائمًا الناتج نفسه للمُدخل نفسه ولا تغيّر شيئًا خارجها، فحسابها مرّتين للمُدخل نفسه هدر لا فائدة منه.

وفكرة memoize أن تغلّف الدالة وتحفظ كل نتيجة تحت مفتاح يمثّل مُدخلاتها، فإن وجدت المفتاح محفوظًا أرجعت نتيجته، وإلا حسبتها ثم حفظتها.

وMap أنسب هنا من الكائن العادي، لأنها تقبل أي نوع مفتاحًا، ولا ترث خصائص قد تتعارض مع مفاتيحك.

تنبيه: لا تستعمل هذه الطريقة مع دالة غير نقيّة، فإن كانت تقرأ الوقت أو تعتمد على حالة خارجها فستُرجع لك نتيجة قديمة.

02

المطلوب

اكتب memoize(fn) بحيث لا تُستدعى الدالة الأصلية مرّتين للمُدخل نفسه.

الفحوص

6 فحوص
  1. الدالة memoize تُرجع دالة
  2. النتيجة صحيحة
  3. المُدخل نفسه يُحسب مرّة واحدة
  4. مُدخل مختلف يُحسب من جديد
  5. تفرّق بين الوسائط المتعدّدة
  6. ثلاثة استدعاءات في الصفحة احتاجت حسابًا واحدًا
03

تلميحات

0/3
دروس المسارأتممت 0 من 8

تعرف في هذا المسار أين يضيع الوقت فعلًا في صفحتك، وكيف توفّره بإضافة العناصر مرّة واحدة وتقليل الاستدعاءات وعدم تكرار الحساب.

مستواه متقدّم، وفيه 8 دروس مجموع مدّتها ساعة ونصف.

index.html
المعاينة
index.html100%
–/6

اضغط «تشغيل وتصحيح» ليبدأ الفحص.

تجد 6 فحوص في بطاقة «المطلوب».

دروس المسارأتممت 0 من 8

تعرف في هذا المسار أين يضيع الوقت فعلًا في صفحتك، وكيف توفّره بإضافة العناصر مرّة واحدة وتقليل الاستدعاءات وعدم تكرار الحساب.

مستواه متقدّم، وفيه 8 دروس مجموع مدّتها ساعة ونصف.