[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.76,0:00:11.53,Default,,0000,0000,0000,,עכשיו שאתם שולטים בבסיס של פונקציות, אני רוצה לדבר איתכם על נושא שהוא קצת מסובך: ההבדל בין משתנים מקומיים למשתנים גלובאלים. Dialogue: 0,0:00:11.53,0:00:16.10,Default,,0000,0000,0000,,המונחים האלו אולי לא אומרים לכם כלום עכשיו, אז בואו נתחיל עם דוגמא. Dialogue: 0,0:00:16.10,0:00:20.57,Default,,0000,0000,0000,,הכנתי את התוכנה הזו בשביל להראות לכם בכמה אינצ׳ים גבהתי כשהייתי קטנה. Dialogue: 0,0:00:20.57,0:00:24.56,Default,,0000,0000,0000,,מכיוון שאנשים גדלים בקצב שונה, המצאתי את התוכנה הזו,  calcInches, Dialogue: 0,0:00:24.56,0:00:29.82,Default,,0000,0000,0000,,אני יכול להעביר לה גיל התחלתי (startAge) וגיל סופי (endAge), ומספר אינצ׳ים לשנה (InchesPerYear), Dialogue: 0,0:00:29.82,0:00:34.73,Default,,0000,0000,0000,,ואז היא תחשב בכמה אינצ׳ים סה״כ גדלתי בכל התקופה הזו. Dialogue: 0,0:00:34.73,0:00:37.84,Default,,0000,0000,0000,,...ותחזיר את התשובה הזו למי שקרא לפונקציה. Dialogue: 0,0:00:37.84,0:00:44.97,Default,,0000,0000,0000,,אז אתם יכולים לראות כאן מ-0 עד 8, אני קוראת ל-calcInches ומעבירה 0,8 ו-2.5, Dialogue: 0,0:00:44.97,0:00:48.74,Default,,0000,0000,0000,,בגלל שגבהתי בערך ב-2.5 אינצ׳ים בשנה. Dialogue: 0,0:00:48.74,0:00:52.71,Default,,0000,0000,0000,,ואז זה עושה את החישוב, ואתם יכולים לראות שזה מחזיר את המספר 20. Dialogue: 0,0:00:52.71,0:00:58.24,Default,,0000,0000,0000,,ואז מ-8 עד 16, אני אקרא לפונקציה, ואעביר לה 8 ו-16 ואז 2 Dialogue: 0,0:00:58.24,0:01:02.38,Default,,0000,0000,0000,,מכיוון שלא גבהתי כל כך, ואתם יכולים לראות שזה מחזיר את הספרה 16. Dialogue: 0,0:01:02.38,0:01:08.46,Default,,0000,0000,0000,,אז זה מגניב, אבל מה שאני רוצה בעצם להציג הוא בכמה אינצ׳ים גבהתי סה״כ בכל הילדות שלי. Dialogue: 0,0:01:08.46,0:01:17.05,Default,,0000,0000,0000,,אז איך אני עושה את זה? ובכן, אני יכולה להתחיל בלהסתכל על הקוד שלי ולחשוב, המממממ, אילו ערכים כדאי שיהיו לי? Dialogue: 0,0:01:17.05,0:01:21.51,Default,,0000,0000,0000,,האם יש לי ערך שמייצג את סה״כ האינצ׳ים? Dialogue: 0,0:01:21.51,0:01:26.04,Default,,0000,0000,0000,,ובכן, יש לי את המשתנה הזה totalInches בתוך פונקציית ה-calcInches שלי Dialogue: 0,0:01:26.04,0:01:30.82,Default,,0000,0000,0000,,אז אני יכולה פשוט להוציא לפלט את זה, איפה שזה אומר התחל כאן. Dialogue: 0,0:01:30.82,0:01:36.44,Default,,0000,0000,0000,,אז בואו נכתוב (text(calcInches,10,200, ונשים את זה בסוף. Dialogue: 0,0:01:36.44,0:01:43.46,Default,,0000,0000,0000,,אוקיי, בואו נראה, מה קיבלנו? או או, קיבלנו את הבחור של ה״או או״. והוא אומר שיש בעיה. Dialogue: 0,0:01:43.46,0:01:51.82,Default,,0000,0000,0000,,totalInches לא מוגדר. אבל זה מוזר, מכיוון שהגדרנו את totalInches כאן לא? var totalInches=.... Dialogue: 0,0:01:51.82,0:01:59.73,Default,,0000,0000,0000,,ובכן, הבעיה היא שהגדרנו את totalInches בתוך הפונקציה, בשורה הזו כאן Dialogue: 0,0:01:59.73,0:02:04.92,Default,,0000,0000,0000,,וכשאנחנו מגדירים משתנה בתוך הפונקציה, הוא נחשב משתנה מקומי. Dialogue: 0,0:02:04.92,0:02:09.74,Default,,0000,0000,0000,,הוא חי רק בתוך הפונקציה הזו כאן (calcInches). Dialogue: 0,0:02:09.74,0:02:15.01,Default,,0000,0000,0000,,והקוד מחוץ לפונקציה, כל זה, הוא לא רואה את המשתנים המקומיים בתוך הפונקציות. Dialogue: 0,0:02:15.01,0:02:18.82,Default,,0000,0000,0000,,הוא רק רואה את הערכים שהפונקציות מחזירות. Dialogue: 0,0:02:18.82,0:02:21.82,Default,,0000,0000,0000,,הוא רק רואה את הערך, לא את המשתנה. Dialogue: 0,0:02:21.82,0:02:26.37,Default,,0000,0000,0000,,אז כשאנחנו מנסים להשתמש ב-totalInches מחוץ לפונקציה, הוא לא יודע מה זה, Dialogue: 0,0:02:26.37,0:02:31.34,Default,,0000,0000,0000,,והוא אומר ״היי, מעולם לא ראיתי את המשתנה הזה קודם, הוא לא מוגדר, אני לא יכול להציג אותו״. Dialogue: 0,0:02:31.34,0:02:37.61,Default,,0000,0000,0000,,אז יש דרך שבה אנחנו יכולים לגרום לקוד שמחוץ לפונקציה להכיר במשתנה הזה, Dialogue: 0,0:02:37.61,0:02:42.98,Default,,0000,0000,0000,,וזה אם נהפוך את המשתנה הזה ממשתנה מקומי למשתנה גלובאלי. Dialogue: 0,0:02:42.98,0:02:50.40,Default,,0000,0000,0000,,אנחנו יכולים לעשות את זה על ידי העברה של הגדרת המשתנה מחוץ לפונקציה למה שנקרא הסקופ הגלובאלי (global scope). Dialogue: 0,0:02:50.40,0:02:58.66,Default,,0000,0000,0000,,ועכשיו, בתוך הפונקציה, כל מה שאנחנו עושים הוא לשנות את הערך של המשתנה הזה בכל פה אבל מבלי להגדיר אותו או להכריז עליו. Dialogue: 0,0:02:58.66,0:03:03.22,Default,,0000,0000,0000,,אז תוכלו לראות שזה אומר 'Total grown over life: 16' Dialogue: 0,0:03:03.22,0:03:06.65,Default,,0000,0000,0000,,אז זה מצא את המשתנה מכיוון שהפכנו אותו למשתנה גלובאלי Dialogue: 0,0:03:06.65,0:03:10.32,Default,,0000,0000,0000,,אבל זה לא משנה את הערך שרצינו. Dialogue: 0,0:03:10.32,0:03:11.71,Default,,0000,0000,0000,,זה רק הערך העדכני ביותר. Dialogue: 0,0:03:11.71,0:03:18.43,Default,,0000,0000,0000,,וזה בכלל שבכל פעם שאנחנו קוראים לפונקציה, היא משנה את הערך של totalInches למה שהיא חישבה באותו הרגע, נכון? Dialogue: 0,0:03:18.43,0:03:22.23,Default,,0000,0000,0000,,אז מה שאנחנו בעצם רוצים לעשות זה להמציא משתנה חדש Dialogue: 0,0:03:22.23,0:03:29.41,Default,,0000,0000,0000,,שבו נוכל לאחסן את הסכום שאנחנו רוצים להוסיף... אתם יודעים, הסכום הכללי עבור טווח גילאים. Dialogue: 0,0:03:29.41,0:03:38.38,Default,,0000,0000,0000,,אז בואו נשנה את זה חזרה ללהיות משתנה מקומי, ובואו נעשה משתנה גלובאלי חדש בשם lifeInches Dialogue: 0,0:03:38.38,0:03:41.00,Default,,0000,0000,0000,,ונאתחל אותו עם 0. Dialogue: 0,0:03:41.00,0:03:49.98,Default,,0000,0000,0000,,ואז בתוך הפונקציה, אנחנו נוסיף למשתנה הגלובלי הזה את הסכום עבור הטווח, כך: lifeInches += totalInches Dialogue: 0,0:03:49.98,0:03:53.27,Default,,0000,0000,0000,,אז אנחנו הולכים להוסיף את כמה שחישבנו בכל פעם שקראנו לפונקציה הזו, Dialogue: 0,0:03:53.27,0:03:56.40,Default,,0000,0000,0000,,אנחנו הולכים להוסיף את זה למשתנה הגלובלי lifeInches Dialogue: 0,0:03:56.40,0:03:59.87,Default,,0000,0000,0000,,ואז בתחתית, אנחנו נציג את lifeInches:\N(text(lifeInches, 10, 200 Dialogue: 0,0:03:59.87,0:04:03.84,Default,,0000,0000,0000,,טה דה! הגדילה לכל אורך החיים! Dialogue: 0,0:04:03.84,0:04:06.69,Default,,0000,0000,0000,,זה לא בדיוק הגובה שלי, אני גבוהה יותר מזה! Dialogue: 0,0:04:06.69,0:04:10.51,Default,,0000,0000,0000,,אבל זה בגלל שאתם יודעים, נולדתי עם יותר מ-0 אינצ׳. Dialogue: 0,0:04:10.51,0:04:13.48,Default,,0000,0000,0000,,אז אם אנחנו רוצים את הסה״כ, אולי נתחיל עם 20. Dialogue: 0,0:04:13.48,0:04:17.26,Default,,0000,0000,0000,,והנה לכם, זה בדיוק הגובה שלי. Dialogue: 0,0:04:17.26,0:04:22.07,Default,,0000,0000,0000,,אוקיי, אז בואו נסכם, totalInches הוא משתנה מקומי. Dialogue: 0,0:04:22.07,0:04:27.50,Default,,0000,0000,0000,,ואנחנו יודעים את זה מכיוון שהכרזנו עליו בתוך הפונקציה ולא מחוץ לפונקציה. Dialogue: 0,0:04:27.50,0:04:33.29,Default,,0000,0000,0000,,וזה אומר שהקוד שמחוץ לפונקציה לא מכיר אותו. Dialogue: 0,0:04:33.29,0:04:37.82,Default,,0000,0000,0000,,והמשתנה lifeInches הוא משתנה גלובאלי. Dialogue: 0,0:04:37.82,0:04:42.84,Default,,0000,0000,0000,,ואנחנו יודעים את זה מכיוון שההכרזה עליו היא מחוץ לפונקציה, בסקופ הגלובאלי שלנו. Dialogue: 0,0:04:42.84,0:04:47.02,Default,,0000,0000,0000,,אז נסו לזכור את זה כשאתם כותבים את הפונקציות והמשתנים שלכם. Dialogue: 0,0:04:47.02,0:04:51.37,Default,,0000,0000,0000,,ונסו לחשוב אם אתם צריכים משתנה מקומי שרק הפונקציה שלכם תשתמש בו, Dialogue: 0,0:04:51.37,0:04:54.65,Default,,0000,0000,0000,,או משתנה גלובאלי שכל התוכנה שלכם תוכל להשתמש בו. Dialogue: 0,0:04:54.65,0:04:57.56,Default,,0000,0000,0000,,ואל תחששו אם הנושא הזה גדול מדי עליכם, Dialogue: 0,0:04:57.56,0:05:01.67,Default,,0000,0000,0000,,זהו אחד מהנושאים היותר מסובכים בתכנות ובשפת JavaScript בפרט, Dialogue: 0,0:05:01.67,0:05:05.67,Default,,0000,0000,0000,,וזה משהו שאתם תשתפרו בו ככל שתתאמנו יותר. בהצלחה!