Skip to content
בעמוד זה

משתנים וקבועים

בפרק קודם הזכרנו את המושג מזהים.

מזהים בעולם התכנות נקראים ליטרלים. פרוש המילה ליטרל הוא מפורש ובהקשר שלנו סמל, מזהה.

בשפת Java Script יש כמה סוגי מזהים.

  • מזהה מפורש – ישיר
  • מזהה משתנה
  • ומזהה קבוע

ניקח את שורת הקוד הבאה:

javascript
let abc = 256;

התחביר כאן הוא די פשוט והוא מחולק לשלושה חלקים

הראשון המילה let והיא מילת מפתח בשפת Java Script איתה אנו מגדירים משתנים

השני המילה abc זהו מזהה המשתנה

השלישי הוא הערך המספרי 256 והוא נקרא מזהה מפורש.

שלושת החלקים יחד יוצרים את הפעולה של הצבת הערך 256 במשתנה עם השם abc. כמובן לעצב את זה עם אילוסטריטור

מפורשים

מזהה מפורש הוא מושג, שהאמת, פחות מוכר בעולם התכנות. אני הכרתי צורת חשיבה כזו בשלבים הראשונים שלי בעולם התכנות ואני חושב שהם יכולים לתת נדבך להבנת סוגי מזהים בתכנות.

מזהה מפורש הוא כל אחד מהדוגמאות הבאות:

javascript
1
3.14
'abc'
"ABC"
true

בשורה הראשונה יש לו מזהה מסוג מספר שלם.

בשורה השנייה מזהה מסוג מספר עם נקודה צפה. במילים פשוטות הכוונה לכל מספר שאינו שלם ושיש לו ערך לאחר נוסף לאחר הנקודה.

בשורה השלישית והרביעית יש לנו מזהי טקסט שבעולם התכנות נקראים מחרוזות (String – סטרינג). הם נקראים כך משום ששילוב כל האותיות יחדיו יוצרים מעין מחרוזות של אותיות.

בשורה האחרונה יש לנו מזהה מסוג בוליאני, מזהים אלו יכולים להיות אחד משני ערכים בלבד

  • True – אמת
  • False – שקר

בדרך כלל נאחסן את המזהה המפורש בתוך מזהה משתנה. שכשמו כן הוא משתנה ויכול להכיל כל פעם ערך אחר.

משתנים

מה זה משתנים?

דמינו חדר גדול המכיל בתוכו חפצים רבים וביניהם ארונות אחסון. בכל ארון אחסון ישנם מגירות, המגירות ריקות ואין עליהן שום תווית.

כעת אנו רוצים להניח חפץ מסוים באחד המגירות נניח מסרק, אנו לוקחים את המסרק ומניחים אותו בתוך המגירה השלישית מלמעלה בטור השני משמאל. כדי שנוכל לזכור את הכול אנו נרשום באזור התווית של המגירה את השם מסרק, ככה:

ציור המציג ארון בחדר עם הרבה מגירות, על מגירה אחת כתוב באדום מסרק.

כך כל פעם שנרצה לקבל את המסרק נפתח המגירה עם התווית "מסרק"

פשוט? זהו משתנה

משתנה הוא יחידת אחסון – היכול להכיל ערכים משתנים ועל כן שמו – הדרך לגשת למידע מתבצע דרך השם שנתנו למשתנה.

כדי לייצר משתנה בשפת Java Script נשתמש במילת המפתח let ואחריה נכתוב את שם המשתנה. בנוסף, אם נרצה נוכל להציב ערך במשתנה ע"י סימון בסימן השווה. כל הדוגמאות הבאות יוצרות משתנים ושני האחרונים גם מציבים בהם ערכים. הראשון מסוג מספר עם נקודה צפה והשני מסוג מחרוזת.

javascript
let a;
let b;
let PI      = 3.14;
let welcome = 'Welcome to my website';

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

השם שניתן למשתנה יכול להיות כל דבר כל עוד הוא מציית לכללי המזהים:

  • יכול להכיל מספרים ואותיות באנגלית ואת הסימן קו תחתון _ בלבד
  • חייב להתחיל באות או בסימן הקו תחתון _ בלבד ולא עם מספר
  • לא יכול להיות אחד מהמילים השמורות של Java Script
  • המזהה תלוי רישיות (כפי שראינו בפרק קודם) כך שהמשתנה PI הוא לא המשתנה pi

הסתכלו על הדוגמאות הבאות ונסו לזהות אלו מזהים חוקיים ואלו לא

javascript
let 1
a;
let _b;
let PI____  = 3.14;
let WeLcOmE = 'Welcome to my website';

המזהה הראשון לא תקין והוא יגרום לשגיאה שאר המזהים עם זאת שהם אולי "משונים" נחשבים תקינים לגמרי.

ניתן לשנות את ערך המשתנה מתי רוצים ע"י שימוש נוסף בסמל ההצבה, כך:

javascript
let abc = 128;
// Other parts of the code
abc     = 256;

קבועים

כפי שראינו בעזרת הסמל = אנו יכולים לקבוע ערך למשתנה, על מזהה קבוע ניתן לבצע פעולה כזו פעם אחת בלבד! יצירת קבוע נעשה בעזרת מילת המפתח const (קונסט – קבוע)

javascript
const PI = 3.14;

PI = 16; // ERROR!

אם משתנים יכולים "להשתנות" אז הערך של קבועים קבוע לכל חיי התוכנה ללא האפשרות לשנותם.

כפי שניתן לראות ניסיון להציב ערך חדש בקבוע PI יגרום לשגיאה.

למה צריך קבועים?

קבועים נועדו לייצר מזהה שברור לנו שלא הולך להשתנות לאורך כל חיי התוכנה.

אם כן נשאל, למה בכלל צריך קבוע? נשתמש במזהה מפורש ונכתוב כל פעם את המספר 3.14 (פאי) כאשר נצטרך אותו.

ראשית, זהו פתרון אפשרי, השימוש בקבועים נועד לסייע ובמקרים רבים אפשר לוותר עליהם.

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

ניקח לדוגמא את הקבוע הבא

javascript
const CONNECTION_TIMEOUTE = 5000;

בשורה הזו הגדרנו את הערך 5000 לקבוע משם CONNECTION_TIMEOUT. עם הערך הזה אנו הולכים להשתמש בקוד בכל פעם שאנו שולחים בקשה לשרת חיצוני כאשר הזמן שאנו מוכנים להמתין הוא 5 שניות (שהם 5000 מילי-שניות, המספר שהוצב בקבוע) מושג זה נקרא CONNECTION_TIMEOUT כלומר מתי אנחנו כבר לא מוכנים להמשיך להמתין.

נניח ולא השתמשנו בקבוע אלא פשוט כתבנו את המספר 5,000 לכל אורך הקוד ועכשיו החלטנו שאנו רוצים לשנות את זמן ההמתנה לעד 15 שניות (15,000) ובכך לתמוך גם במכשירים עם חיבור אינטרנט איטי. בכזה מקרה יהיה עלינו לשנות את המספר לאורך כל הקוד ויש סיכוי שנפספס איזה מופע אחד או שניים. גם אם לא נפספס התהליך עצמו מייגע.

ניתן לחסוך את כל זה ע"י שימוש בקבוע ואז כל שעלינו לעשות הוא לשנות רק שורת קוד אחד

javascript
const CONNECTION_TIMEOUTE = 15000;

ובפעולה אחת שנינו את זמן ההמתנה בכל הקוד. שווה ממש.

יתרון נוסף הוא בצורת החשיבה. נניח ויש לנו שורת קוד שמקבלת מידע משרת ואנו מאחסנים את המידע בקבוע עם השם response אנו יכולים להיות בטוחים לכל שורת הקוד שנכתוב אח"כ שהקבוע הזה מכיל את הפורמט המתאים של המידע.

יש לשים לב שעם זאת שקבוע הוא קבוע ב-Java Script צורת המימוש של קבועים שונה קצת משפות אחרות.

בשפות אחרות כאשר מייצרים קבוע לא ניתן לערוך שום חלק שלו. ב-Java Script לעומת זאת הדבר מונע רק הצבה נוספת בעזרת הסמל =

במילים פשוטות מזהה שהוגדר בעזרת מילת המפתח const יכול להשתמש עם סמל ההצבה פעם אחת והדבר חייב לקראות בעת ההצהרה על הקבוע.

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

למשך כל שאר המדריך נראה הרבה דוגמאות של מזהים מפורשים, משתנים וקבועים וככל שנשתמש בהם הצורך בהם יובהר יותר ויותר.

בפרק הבא נתחיל לבצע פעולות חישוביות ונריץ קוד Java Script בפעם הראשונה.