Return to Video

משתנים מקומיים וגלובאלים

  • 0:01 - 0:12
    עכשיו שאתם שולטים בבסיס של פונקציות, אני רוצה לדבר איתכם על נושא שהוא קצת מסובך: ההבדל בין משתנים מקומיים למשתנים גלובאלים.
  • 0:12 - 0:16
    המונחים האלו אולי לא אומרים לכם כלום עכשיו, אז בואו נתחיל עם דוגמא.
  • 0:16 - 0:21
    הכנתי את התוכנה הזו בשביל להראות לכם בכמה אינצ׳ים גבהתי כשהייתי קטנה.
  • 0:21 - 0:25
    מכיוון שאנשים גדלים בקצב שונה, המצאתי את התוכנה הזו,  calcInches,
  • 0:25 - 0:30
    אני יכול להעביר לה גיל התחלתי (startAge) וגיל סופי (endAge), ומספר אינצ׳ים לשנה (InchesPerYear),
  • 0:30 - 0:35
    ואז היא תחשב בכמה אינצ׳ים סה״כ גדלתי בכל התקופה הזו.
  • 0:35 - 0:38
    ...ותחזיר את התשובה הזו למי שקרא לפונקציה.
  • 0:38 - 0:45
    אז אתם יכולים לראות כאן מ-0 עד 8, אני קוראת ל-calcInches ומעבירה 0,8 ו-2.5,
  • 0:45 - 0:49
    בגלל שגבהתי בערך ב-2.5 אינצ׳ים בשנה.
  • 0:49 - 0:53
    ואז זה עושה את החישוב, ואתם יכולים לראות שזה מחזיר את המספר 20.
  • 0:53 - 0:58
    ואז מ-8 עד 16, אני אקרא לפונקציה, ואעביר לה 8 ו-16 ואז 2
  • 0:58 - 1:02
    מכיוון שלא גבהתי כל כך, ואתם יכולים לראות שזה מחזיר את הספרה 16.
  • 1:02 - 1:08
    אז זה מגניב, אבל מה שאני רוצה בעצם להציג הוא בכמה אינצ׳ים גבהתי סה״כ בכל הילדות שלי.
  • 1:08 - 1:17
    אז איך אני עושה את זה? ובכן, אני יכולה להתחיל בלהסתכל על הקוד שלי ולחשוב, המממממ, אילו ערכים כדאי שיהיו לי?
  • 1:17 - 1:22
    האם יש לי ערך שמייצג את סה״כ האינצ׳ים?
  • 1:22 - 1:26
    ובכן, יש לי את המשתנה הזה totalInches בתוך פונקציית ה-calcInches שלי
  • 1:26 - 1:31
    אז אני יכולה פשוט להוציא לפלט את זה, איפה שזה אומר התחל כאן.
  • 1:31 - 1:36
    אז בואו נכתוב (text(calcInches,10,200, ונשים את זה בסוף.
  • 1:36 - 1:43
    אוקיי, בואו נראה, מה קיבלנו? או או, קיבלנו את הבחור של ה״או או״. והוא אומר שיש בעיה.
  • 1:43 - 1:52
    totalInches לא מוגדר. אבל זה מוזר, מכיוון שהגדרנו את totalInches כאן לא? var totalInches=....
  • 1:52 - 2:00
    ובכן, הבעיה היא שהגדרנו את totalInches בתוך הפונקציה, בשורה הזו כאן
  • 2:00 - 2:05
    וכשאנחנו מגדירים משתנה בתוך הפונקציה, הוא נחשב משתנה מקומי.
  • 2:05 - 2:10
    הוא חי רק בתוך הפונקציה הזו כאן (calcInches).
  • 2:10 - 2:15
    והקוד מחוץ לפונקציה, כל זה, הוא לא רואה את המשתנים המקומיים בתוך הפונקציות.
  • 2:15 - 2:19
    הוא רק רואה את הערכים שהפונקציות מחזירות.
  • 2:19 - 2:22
    הוא רק רואה את הערך, לא את המשתנה.
  • 2:22 - 2:26
    אז כשאנחנו מנסים להשתמש ב-totalInches מחוץ לפונקציה, הוא לא יודע מה זה,
  • 2:26 - 2:31
    והוא אומר ״היי, מעולם לא ראיתי את המשתנה הזה קודם, הוא לא מוגדר, אני לא יכול להציג אותו״.
  • 2:31 - 2:38
    אז יש דרך שבה אנחנו יכולים לגרום לקוד שמחוץ לפונקציה להכיר במשתנה הזה,
  • 2:38 - 2:43
    וזה אם נהפוך את המשתנה הזה ממשתנה מקומי למשתנה גלובאלי.
  • 2:43 - 2:50
    אנחנו יכולים לעשות את זה על ידי העברה של הגדרת המשתנה מחוץ לפונקציה למה שנקרא הסקופ הגלובאלי (global scope).
  • 2:50 - 2:59
    ועכשיו, בתוך הפונקציה, כל מה שאנחנו עושים הוא לשנות את הערך של המשתנה הזה בכל פה אבל מבלי להגדיר אותו או להכריז עליו.
  • 2:59 - 3:03
    אז תוכלו לראות שזה אומר 'Total grown over life: 16'
  • 3:03 - 3:07
    אז זה מצא את המשתנה מכיוון שהפכנו אותו למשתנה גלובאלי
  • 3:07 - 3:10
    אבל זה לא משנה את הערך שרצינו.
  • 3:10 - 3:12
    זה רק הערך העדכני ביותר.
  • 3:12 - 3:18
    וזה בכלל שבכל פעם שאנחנו קוראים לפונקציה, היא משנה את הערך של totalInches למה שהיא חישבה באותו הרגע, נכון?
  • 3:18 - 3:22
    אז מה שאנחנו בעצם רוצים לעשות זה להמציא משתנה חדש
  • 3:22 - 3:29
    שבו נוכל לאחסן את הסכום שאנחנו רוצים להוסיף... אתם יודעים, הסכום הכללי עבור טווח גילאים.
  • 3:29 - 3:38
    אז בואו נשנה את זה חזרה ללהיות משתנה מקומי, ובואו נעשה משתנה גלובאלי חדש בשם lifeInches
  • 3:38 - 3:41
    ונאתחל אותו עם 0.
  • 3:41 - 3:50
    ואז בתוך הפונקציה, אנחנו נוסיף למשתנה הגלובלי הזה את הסכום עבור הטווח, כך: lifeInches += totalInches
  • 3:50 - 3:53
    אז אנחנו הולכים להוסיף את כמה שחישבנו בכל פעם שקראנו לפונקציה הזו,
  • 3:53 - 3:56
    אנחנו הולכים להוסיף את זה למשתנה הגלובלי lifeInches
  • 3:56 - 4:00
    ואז בתחתית, אנחנו נציג את lifeInches:
    (text(lifeInches, 10, 200
  • 4:00 - 4:04
    טה דה! הגדילה לכל אורך החיים!
  • 4:04 - 4:07
    זה לא בדיוק הגובה שלי, אני גבוהה יותר מזה!
  • 4:07 - 4:11
    אבל זה בגלל שאתם יודעים, נולדתי עם יותר מ-0 אינצ׳.
  • 4:11 - 4:13
    אז אם אנחנו רוצים את הסה״כ, אולי נתחיל עם 20.
  • 4:13 - 4:17
    והנה לכם, זה בדיוק הגובה שלי.
  • 4:17 - 4:22
    אוקיי, אז בואו נסכם, totalInches הוא משתנה מקומי.
  • 4:22 - 4:27
    ואנחנו יודעים את זה מכיוון שהכרזנו עליו בתוך הפונקציה ולא מחוץ לפונקציה.
  • 4:27 - 4:33
    וזה אומר שהקוד שמחוץ לפונקציה לא מכיר אותו.
  • 4:33 - 4:38
    והמשתנה lifeInches הוא משתנה גלובאלי.
  • 4:38 - 4:43
    ואנחנו יודעים את זה מכיוון שההכרזה עליו היא מחוץ לפונקציה, בסקופ הגלובאלי שלנו.
  • 4:43 - 4:47
    אז נסו לזכור את זה כשאתם כותבים את הפונקציות והמשתנים שלכם.
  • 4:47 - 4:51
    ונסו לחשוב אם אתם צריכים משתנה מקומי שרק הפונקציה שלכם תשתמש בו,
  • 4:51 - 4:55
    או משתנה גלובאלי שכל התוכנה שלכם תוכל להשתמש בו.
  • 4:55 - 4:58
    ואל תחששו אם הנושא הזה גדול מדי עליכם,
  • 4:58 - 5:02
    זהו אחד מהנושאים היותר מסובכים בתכנות ובשפת JavaScript בפרט,
  • 5:02 - 5:06
    וזה משהו שאתם תשתפרו בו ככל שתתאמנו יותר. בהצלחה!
Title:
משתנים מקומיים וגלובאלים
Description:

ניתן לצפות בסרטים נוספים בכתובת:
https://www.khanacademy.org/cs/programming/

more » « less
Video Language:
English
Duration:
05:06

Hebrew subtitles

Revisions