PracticU

שפת JavaScript - טווח הכרה - Scope

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › שפת JavaScript - טווח הכרה - Scope
מילון מושגים:
JavaScript - שפת תכנות שרצה בעיקר בדפדפן ומוסיפה אינטראקטיביות לדפי אינטרנט. רצה גם בצד השרת באמצעות Node.js.
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
סקריפט - קובץ המכיל רצף פקודות שמבוצעות על ידי מפרש, לרוב כדי להפוך משימות לאוטומטיות.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.

שפת JavaScript - טווח הכרה - Scope
סקופ (טווח הכרה) קובע מאיפה אפשר להשתמש במשתנה או בפונקציה. השיעור משווה בין var, let ו-const, ומראה איך var מורם לתחילת הפונקציה, ואיך let ו-const לא.
שני מושגים
1. undeclared: משתנה שלא הוגדר בכלל. שימוש בו גורם לקריסה.
2. uninitialized: משתנה שהוגדר בלי ערך. הוא מחזיק undefined ולא גורם לקריסה.
הויסטינג
1. var: המערכת מעלה את ההגדרה לתחילת הפונקציה או הסקריפט, בלי הערך. לכן אפשר להשתמש בו גם לפני השורה שבה הוגדר.
2. var והבלוקים: var לא שייך לבלוק של if או לולאה, אלא לפונקציה כולה. לכן משתנה שהוגדר בתוך if נשאר נגיש מחוצה לו.
3. let ו-const: אין הויסטינג. אי אפשר להשתמש בהם לפני ההגדרה, ומותר להשתמש בהם רק מהשורה של ההגדרה עד סוף הבלוק.
שימו לב
1. ההבדל בין let ל-const: מבחינת סקופ הם זהים. const חייב ערך בהגדרה ואי אפשר לשנותו, ו-let מאפשר שינוי.
2. המלצה: לפי השיעור, כיום כמעט לא משתמשים ב-var, ו-const עדיף כשהערך לא צריך להשתנות.
עכשיו אפשר לדעת איפה משתנה נגיש, ולמה let ו-const בטוחים יותר.
השיעור הבא בקורס: שפת JavaScript - הסבר על this - חלק 1

פרקי ההרצאה: שפת JavaScript - טווח הכרה - Scope

  1. 00:00

    מה זה scope וטווח הכרה

  2. 01:03

    משתנה שלא אותחל מקבל undefined

  3. 01:40

    משתנה שלא הוגדר וגורם לקריסה

  4. 02:20

    משתנה var שמוגדר בתוך if

  5. 03:03

    שימוש במשתנה var מחוץ ל-if

  6. 04:23

    הויסטינג של משתנה var

תמלול ההרצאה: שפת JavaScript - טווח הכרה - Scope

הטקסט המלא של הדקות הראשונות בהרצאה «שפת JavaScript - טווח הכרה - Scope» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    הדבר הבא שחשוב לנו להכיר בנוגע לג'אווה סקריפט וכמובן Node.js זה את נושא הסקופינג. מה זה בעצם סקופ? סקופ זה טווח הכרה.

  2. 00:15

    אם אני מגדיר משתנה או פונקציה, סקופ אומר מאיפה אפשר להשתמש עם המשתנה או עם הפונקציה. אז אנחנו ראינו שאפשר להגדיר משתנים על ידי var, let או const ויש הבדל ביניהם מבחינת סקופינג.

  3. 00:32

    אז בואו נראה מה ההבדל. ראשית בואו רגע נסתכל על משהו מעניין אם יש לי פה משתנה x ובוא נשים בתוכו 10 ונבצע console.log של x בצורה כזאת נרשום אפילו x שווה לx נריץ את זה יש לנו כאן את node.app.go ונקבל x שווה 10 אבל אם אני לא מכניס בתוכו ערך אנחנו ראינו באחד הסרטונים הקודמים שיוצג לי undefined

  4. 01:07

    הדבר הזה נקרא uninitialized, זאת אומרת שיש לי פה משתנה, uninitialized variable נניח, שלא התחלתי אותו, ולכן אני רואה undefined.

  5. 01:23

    אבל אם אני עכשיו אנסה להציג את y, ואין לי בכלל משתנה שנקרא y, האם גם כאן יוצג לי undefined? אז התשובה היא לא, המערכת קורסת.

  6. 01:40

    וזה נקרא undeclared זה ההבדל קודם כל בין uninitialized לבין undeclared uninitialized משתנה אין בו value אז אוטומטית יש בו undefined וזה בסדר ו-undeclared אסור לי בכלל לעשות את זה כי הוא לא מוגדר וזה כמובן קריסה בתוכנית אחרי שהבהרנו את שני המונחים האלה בואו ניקח איזושהי פונקציה f ובואו ניקח כאן

  7. 02:12

    איזשהו תנאי ובואו נניח שהתנאי הזה הוא true אפילו נרשום כאן true זאת אומרת שתמיד המערכת נכנסת לתוך הif הזה. ואנחנו עכשיו מגדירים איזשהו משתנה var a ומכניסים לתוכו 10 אפשר את זה רגע להוציא כי הבנו את ההבדל בין ה- initial אז לאן נקלר.

  8. 02:35

    ועכשיו אני רוצה להציג console.log את a מה בעצם ערכו וכאשר אנחנו קוראים לפונקציה f אז כמובן הוא אמור להיכנס לתוך הif להגדיר לנו את a ולהציג את ערכו. בואו נריץ ונראה a שווה 10. אוקיי, מעולה.

  9. 02:58

    האם אני יכול בעצם להציג גם כאן את a? בואו נראה. אז אני מריץ את זה שוב פעם והוא אומר לי כן הכל בסדר מותר לך להציג את a גם כאן.

  10. 03:14

    טיפה נקטין את הגופן ומה בעצם קרה הרי a מוגדר בתוך הif בתוך הסוגריים של הif אבל אנחנו רואים שמותר להשתמש איתו גם בחוץ אוקיי בואו נראה אם כאן יהיה מותר להשתמש עם a המערכת אומרת לי כן אבל הוא undefined יש פה משהו מעניין אוקיי בואו נראה אם כאן יהיה מותר להשתמש עם a המערכת אומרת לי כן אבל הוא undefined תכף נבין מה קורה

  11. 03:47

    אם אני אנסה להשתמש פה עם a אני כמובן אקבל קריסה זה כבר not defined בכלל מה שנקרא undeclared אז זה כמובן doesn't fly כן זה כמובן aero אבל במסגרת של הפונקציה שלנו אנחנו רואים שבהרבה מקומות אני יכול להשתמש עם a בואו נמספר אותם מקום ראשון שני שלישי ורביעי נריץ את זה שוב פעם ונראה שבשני המקומות הראשונים זה undefined ושלוש וארבע זה עשר.

  12. 04:23

    למה זה? כי מה שבעצם קורה כאשר אנחנו משתמשים ב-VAR מתבצע משהו שנקרא הויסטינג. הויסט זה להרים משהו או להניף משהו למעלה. לאן בדיוק JavaScript מרימה את המשתנה?

  13. 04:43

    אז JavaScript מסתכלת על הפונקציה ואומרת אוקיי, A זה משתנה שנמצא בתוך הפונקציה ולכן הוא לוקאלי לתוך הפונקציה אבל אני javascript ירים אותו הכי למעלה שאני יכולה בתוך הפונקציה רק מבחינת ההגדרה לא מבחינת ההתחול אז javascript לוקחת את המשתנה a ושמה אותו פה בלי להתחל אותו

  14. 05:09

    הפעולה הזאת נקראת הויסטינג וכאן היא משאירה את ההתחול זאת אומרת שאנחנו לא כתבנו את הקוד

לקורס המלא: קורס NodeJS אונליין בעברית

ההרצאה הקודמת: שפת JavaScript - פונקציה חץ - Arrow

ההרצאה הבאה: שפת JavaScript - הסבר על this - חלק 1

הרצאות קשורות מקורסים אחרים

  • טווח הכרה - Scope
  • מבוא ל-Javascript
  • Variable Scope
  • GPO - Scope

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React