נכון מאוד, והסיבה היא בגלל שחתימת הפונקציה Replace מקבלת שתי ארגומנטים מסוג סטרינג, וממילא בשביל הפעלת הפונקציה Replace מופעלת הפונקציה Mystr() כדי לקבל את הסטירנג להעברה כארגומנט המתאים.
במילים אחרות, אם היינו רוצים שהפונקציה לא תופעל עד שיהיה בה צורך היינו צריכים להעביר אותה כפונקציה ולא כסטרינג. תוכל לממש שוב את הפונקציה Replace ולשנות/להוסיף/להעמיס בחתימתה קבלת פונקציה (למשל הטיפוס Func<String>), וכמובן זה גרוע מאוד אם תעשה ככה בכל צומת בדרכך שתהיה שם בעיית ביצועים קלה.
אתה יכול לבדוק עם IndexOf שהמופע נמצא ורק אם כן להפעיל את הפונקציה, אבל הרי גם הפונקציה לצערינו תפעיל את הפונקציה הזו שוב...
ולסיכום, הפרדת המטלות בצורה מודלרית מחייבת כפל בדיקות הכרוכים בחוסר יעילות מסויים. אתה חייב להרשות למחשב פה ושם לבצע דברים פעמיים סתם בשביל יופי חלוקת התפקידים.
פורסם במקור בפורום CODE613 ב22/01/2015 13:05 (+02:00)
בלוג מעולה לגמרי. מצאתי שם מדריך על JS מתומצת 
