0:00:00.764,0:00:11.532 עכשיו שאתם שולטים בבסיס של פונקציות, אני רוצה לדבר איתכם על נושא שהוא קצת מסובך: ההבדל בין משתנים מקומיים למשתנים גלובאלים. 0:00:11.532,0:00:16.096 המונחים האלו אולי לא אומרים לכם כלום עכשיו, אז בואו נתחיל עם דוגמא. 0:00:16.096,0:00:20.569 הכנתי את התוכנה הזו בשביל להראות לכם בכמה אינצ׳ים גבהתי כשהייתי קטנה. 0:00:20.569,0:00:24.562 מכיוון שאנשים גדלים בקצב שונה, המצאתי את התוכנה הזו,  calcInches, 0:00:24.562,0:00:29.821 אני יכול להעביר לה גיל התחלתי (startAge) וגיל סופי (endAge), ומספר אינצ׳ים לשנה (InchesPerYear), 0:00:29.821,0:00:34.727 ואז היא תחשב בכמה אינצ׳ים סה״כ גדלתי בכל התקופה הזו. 0:00:34.727,0:00:37.842 ...ותחזיר את התשובה הזו למי שקרא לפונקציה. 0:00:37.842,0:00:44.969 אז אתם יכולים לראות כאן מ-0 עד 8, אני קוראת ל-calcInches ומעבירה 0,8 ו-2.5, 0:00:44.969,0:00:48.737 בגלל שגבהתי בערך ב-2.5 אינצ׳ים בשנה. 0:00:48.737,0:00:52.713 ואז זה עושה את החישוב, ואתם יכולים לראות שזה מחזיר את המספר 20. 0:00:52.713,0:00:58.239 ואז מ-8 עד 16, אני אקרא לפונקציה, ואעביר לה 8 ו-16 ואז 2 0:00:58.239,0:01:02.383 מכיוון שלא גבהתי כל כך, ואתם יכולים לראות שזה מחזיר את הספרה 16. 0:01:02.383,0:01:08.462 אז זה מגניב, אבל מה שאני רוצה בעצם להציג הוא בכמה אינצ׳ים גבהתי סה״כ בכל הילדות שלי. 0:01:08.462,0:01:17.050 אז איך אני עושה את זה? ובכן, אני יכולה להתחיל בלהסתכל על הקוד שלי ולחשוב, המממממ, אילו ערכים כדאי שיהיו לי? 0:01:17.050,0:01:21.512 האם יש לי ערך שמייצג את סה״כ האינצ׳ים? 0:01:21.512,0:01:26.038 ובכן, יש לי את המשתנה הזה totalInches בתוך פונקציית ה-calcInches שלי 0:01:26.038,0:01:30.820 אז אני יכולה פשוט להוציא לפלט את זה, איפה שזה אומר התחל כאן. 0:01:30.820,0:01:36.440 אז בואו נכתוב (text(calcInches,10,200, ונשים את זה בסוף. 0:01:36.440,0:01:43.457 אוקיי, בואו נראה, מה קיבלנו? או או, קיבלנו את הבחור של ה״או או״. והוא אומר שיש בעיה. 0:01:43.457,0:01:51.816 totalInches לא מוגדר. אבל זה מוזר, מכיוון שהגדרנו את totalInches כאן לא? var totalInches=.... 0:01:51.816,0:01:59.731 ובכן, הבעיה היא שהגדרנו את totalInches בתוך הפונקציה, בשורה הזו כאן 0:01:59.731,0:02:04.925 וכשאנחנו מגדירים משתנה בתוך הפונקציה, הוא נחשב משתנה מקומי. 0:02:04.925,0:02:09.736 הוא חי רק בתוך הפונקציה הזו כאן (calcInches). 0:02:09.736,0:02:15.013 והקוד מחוץ לפונקציה, כל זה, הוא לא רואה את המשתנים המקומיים בתוך הפונקציות. 0:02:15.013,0:02:18.824 הוא רק רואה את הערכים שהפונקציות מחזירות. 0:02:18.824,0:02:21.824 הוא רק רואה את הערך, לא את המשתנה. 0:02:21.824,0:02:26.368 אז כשאנחנו מנסים להשתמש ב-totalInches מחוץ לפונקציה, הוא לא יודע מה זה, 0:02:26.368,0:02:31.345 והוא אומר ״היי, מעולם לא ראיתי את המשתנה הזה קודם, הוא לא מוגדר, אני לא יכול להציג אותו״. 0:02:31.345,0:02:37.609 אז יש דרך שבה אנחנו יכולים לגרום לקוד שמחוץ לפונקציה להכיר במשתנה הזה, 0:02:37.609,0:02:42.978 וזה אם נהפוך את המשתנה הזה ממשתנה מקומי למשתנה גלובאלי. 0:02:42.978,0:02:50.396 אנחנו יכולים לעשות את זה על ידי העברה של הגדרת המשתנה מחוץ לפונקציה למה שנקרא הסקופ הגלובאלי (global scope). 0:02:50.396,0:02:58.655 ועכשיו, בתוך הפונקציה, כל מה שאנחנו עושים הוא לשנות את הערך של המשתנה הזה בכל פה אבל מבלי להגדיר אותו או להכריז עליו. 0:02:58.655,0:03:03.224 אז תוכלו לראות שזה אומר 'Total grown over life: 16' 0:03:03.224,0:03:06.648 אז זה מצא את המשתנה מכיוון שהפכנו אותו למשתנה גלובאלי 0:03:06.648,0:03:10.315 אבל זה לא משנה את הערך שרצינו. 0:03:10.315,0:03:11.712 זה רק הערך העדכני ביותר. 0:03:11.712,0:03:18.429 וזה בכלל שבכל פעם שאנחנו קוראים לפונקציה, היא משנה את הערך של totalInches למה שהיא חישבה באותו הרגע, נכון? 0:03:18.429,0:03:22.230 אז מה שאנחנו בעצם רוצים לעשות זה להמציא משתנה חדש 0:03:22.230,0:03:29.413 שבו נוכל לאחסן את הסכום שאנחנו רוצים להוסיף... אתם יודעים, הסכום הכללי עבור טווח גילאים. 0:03:29.413,0:03:38.378 אז בואו נשנה את זה חזרה ללהיות משתנה מקומי, ובואו נעשה משתנה גלובאלי חדש בשם lifeInches 0:03:38.378,0:03:41.004 ונאתחל אותו עם 0. 0:03:41.004,0:03:49.976 ואז בתוך הפונקציה, אנחנו נוסיף למשתנה הגלובלי הזה את הסכום עבור הטווח, כך: lifeInches += totalInches 0:03:49.976,0:03:53.266 אז אנחנו הולכים להוסיף את כמה שחישבנו בכל פעם שקראנו לפונקציה הזו, 0:03:53.266,0:03:56.403 אנחנו הולכים להוסיף את זה למשתנה הגלובלי lifeInches 0:03:56.403,0:03:59.867 ואז בתחתית, אנחנו נציג את lifeInches:[br](text(lifeInches, 10, 200 0:03:59.867,0:04:03.838 טה דה! הגדילה לכל אורך החיים! 0:04:03.838,0:04:06.691 זה לא בדיוק הגובה שלי, אני גבוהה יותר מזה! 0:04:06.691,0:04:10.509 אבל זה בגלל שאתם יודעים, נולדתי עם יותר מ-0 אינצ׳. 0:04:10.509,0:04:13.484 אז אם אנחנו רוצים את הסה״כ, אולי נתחיל עם 20. 0:04:13.484,0:04:17.265 והנה לכם, זה בדיוק הגובה שלי. 0:04:17.265,0:04:22.067 אוקיי, אז בואו נסכם, totalInches הוא משתנה מקומי. 0:04:22.067,0:04:27.499 ואנחנו יודעים את זה מכיוון שהכרזנו עליו בתוך הפונקציה ולא מחוץ לפונקציה. 0:04:27.499,0:04:33.288 וזה אומר שהקוד שמחוץ לפונקציה לא מכיר אותו. 0:04:33.288,0:04:37.816 והמשתנה lifeInches הוא משתנה גלובאלי. 0:04:37.816,0:04:42.839 ואנחנו יודעים את זה מכיוון שההכרזה עליו היא מחוץ לפונקציה, בסקופ הגלובאלי שלנו. 0:04:42.839,0:04:47.024 אז נסו לזכור את זה כשאתם כותבים את הפונקציות והמשתנים שלכם. 0:04:47.024,0:04:51.370 ונסו לחשוב אם אתם צריכים משתנה מקומי שרק הפונקציה שלכם תשתמש בו, 0:04:51.370,0:04:54.646 או משתנה גלובאלי שכל התוכנה שלכם תוכל להשתמש בו. 0:04:54.646,0:04:57.564 ואל תחששו אם הנושא הזה גדול מדי עליכם, 0:04:57.564,0:05:01.674 זהו אחד מהנושאים היותר מסובכים בתכנות ובשפת JavaScript בפרט, 0:05:01.674,0:05:05.674 וזה משהו שאתם תשתפרו בו ככל שתתאמנו יותר. בהצלחה!