משתנה מחוץ לפונקציה
-
@אנא כתב במשתנה מחוץ לפונקציה. תקני?:
אפילו כשקראתי לפונקציה בלי להתייחס לשאר
המשפט הזה שגוי.
כל קובץ סקריפט שנטען מבוצע מייד מראשיתו לסופו.
(הדברים היחידים שלא מבוצעים אלא "נרשמים" אלו פונקציות, מחלקות וכאלו דברים בהם בלוק הקוד של הפעולות שלהם לא מבוצע אלא כשהם ייקראו). -
@אנא כתב במשתנה מחוץ לפונקציה:
על פי מה שאתה אומר לא כדאי להכניס משתנים מחוץ לפונקציה כדי לא להכביד. אני צודק?
בא נבחן במידה ולא היה שום משמעות מבחינת הכבדה.
במקרה כזה היית תמיד שם בחוץ? לא. כי מה שלא צריך להיות בחוץ זה רע שזה בחוץ.
בתכנות תמיד מנסים שחלקים יהיו כמה שיותר סגורים בקופסאות. ככה כשיש בעיה מוצאים את הקופסה הבעייתי בקלות ומתקנים/מחליפים אותה. כמה שיותר תלות בין הפונקציה לבין העולם שסביבה, ככה הקוד גרוע וקשה לתחזוקה. לכן בברירת מחדל, משתנים שבשימוש בפונקציה יוכרזו רק איפה שהם נדרשים. נהוג גם למצמצם אפילו בתוך הפוקנציה לתוך הבלוק (if, for וכדומה) הנדרש עם מילת let שמאפשרת את הצמצום.
משתנה ששמים מחוץ לפונקציה הוא שיתוף/שמירת מידע מעבר לחיי הפונקציה. למשל מונה ביקורים, סביר שתעשה ככה:let counter = 0; function inc(){ counter++; }
אי אפשר לשים את counter בפונקציה במקרה כזה, כי אתה רוצה שכל קיראה תוסיף על הקריאה הקודמת ולא תתחיל מבראשית.
בקשר להכבדה, תיאורטית והיפותטית זה נכון.
במקרה של משתנה פרימטיבי (מספר או טקסט למשל) המשמעות של זה דומה לניעור אבק מהבגד לפני כניסה לאוטו כדי לחסוך בדלק, אבל זה עדיין נכון.
במקרה של אובייקט שיכול להיות ענף (עשרות אלפי משתנים), זה נכון אבל לא צריך להילקח בחשבון עם טובת האפליקציה היא שזה יהיה בחוץ בכפוף לאמור לעיל.