משתנים בשפת Javascript

משתנים (Variables) בשפת Javascript הם מעין קופסאות המחזיקות בתוכן נתונים מסוגים שונים. לכל קופסה כזו ניתן לתת שם ובכל קופסה כזו ניתן להחזיק נתונים. לשמו של משתנה נהוג לקרוא מזהה (Identifier) ואילו לנתון שבתוכו נהוג לקרוא ערך (Value). נוח לנו לעבוד עם משתנים משום שבעזרתם ניתן לעבוד בצורה קלה יותר עם נתונים שונים, להתייחס אליהם, לבצע עליהם פעולות שונות (כמו למשל פעולות חשבוניות) ולהצביע עליהם. במידה רבה משתנים מזכירים נעלמים באלגברה. לכל נעלם יש שם אבל שמו הוא לא הערך שהוא מחזיק. כאלה בדיוק הם המשתנים: לכל אחד מהם יש שם (המזהה שלו) אבל שמם הוא לא הערך (Value) שהם מחזיקים בתוכם. וכמובן, הערך שבתוך משתנה יכול להשתנות. בגלל זה קוראים למשתנים "משתנים".

הכרזה על משתנים

יצירת משתנים ברוב שפות התכנות נקראת הכרזה (Declaring) על משתנים. בשפת Javascript נכריז על משתנה באמצעות המילה var. בדוגמאות הקוד הבאות למשל נכריז בדרך זו על משתנים חדשים:

<script type="text/javascript">
    var a = 5;
    var _ThisYear="Very Good Year"
</script>

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

<script type="text/javascript">
    a = 5;
    _ThisYear="Very Good Year";
</script>

בדרך כלל בשפות תכנות כאשר מכריזים על משתנה חדש יש להכריז גם על סוג המשתנה. כלומר על סוג הנתונים שברצוני שהמשתנה יחזיק בתוכו. סוג הנתונים של משתנה נקרא גם "טיפוס נתונים (Data Type). טיפוסי נתונים יכולים להיות למשל ערכים מספריים, ערכים טקסטואליים (הנקראים מחרוזות) וכדומה. שפת Javascript היא יוצא דופן מבחינה זו. ב - Javascript אין צורך להכריז בשום שלב מה סוג הנתונים שברצוננו להחזיק בתוך משתנה. לא רק זאת, אלא שמשתנה יכול להחזיק בשלב מסוים נתונים מטיפוס אחד ובשלב אחר נתונים מטיפוס שונה לגמרי.

למשל, אנו יכולים להשתמש באותו משתנה באופן הבא ובכל פעם הוא ישנה את סוג הנתונים שבתוכו לפי הקונטקסט:

<script type="text/javascript">
    ThisYear = 2011;
    ThisYear="Very Good Year";
</script>

בדוגמה למעלה למשל המשתנה ThisYear מקבל קודם כל את הערך המספרי 2011. ולכן בשלב זה טיפוס הנתונים שלו הוא מספרי. שורה לאחר מכן הוא מקבל את הערך "Very Good Year" ובאותו רגע טיפוס הנתונים שלו משתנה והופך להיות מסוג מחרוזת (String), כלומר טקסטואלי. כאשר נרצה להציב בתוך משתנה ערכים טקסטואליים מטיפוס נתונים מחרוזת נכניס את הערך לתוך מרכאות כפולות. כך המהדר (Compiler) יידע שאנו מתכוונים למחרוזת ולא למספר. בדוגמת הקוד הבאה למשל בהצבה הראשונה טיפוס הנתונים יהיה מספרי ואילו בהצבה השנייה טיפוס הנתונים יהיה מסוג מחרוזת:

<script type="text/javascript">
    טיפוס נתונים מספרי
    ThisYear = 2011;
    טיפוס נתונים מסוג מחרוזת
    ThisYear="2011";
</script>

 

כללים למתן שמות (מזהים) למשתנים

ב - Javascript אין כללים מיוחדים לגבי האופן שבו על מזהים להיות מלבד העובדה שהם חייבים להתחיל באחת מן האותיות האנגליות, בקו תחתי או בסימן דולר. החל מגרסה 1.5 של Javascript ניתן לשלב בתוך שמו (אך לא בתחילתו) של משתנה גם סימנים מיוחדים כגון הסימן "/".

דוגמאות למזהים חוקיים ב - Javascript

var_Ident
_Variable
$Identifier
_/Variable
VarDate

חשוב ביותר: בשפת Javascript ישנה הבחנה בין אותיות לועזיות גדולות לקטנות. משמעות הדבר היא שמשתנה שהמזהה שלו הוא: varDate יהיה שונה ממשתנה שהמזהה שלו הוא VarDate. לכן, כאשר אתם כותבים קוד Javascript היו זהירים מאוד בכתיבת המזהים.

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

רשימת המילים השמורות בשפת Javascript

break continue do for import new this void
case default else function in return typeof while
comment delete export if label switch var with

בנוסף למילים שמורות שמקורן בשפת Javascript עצמה ישנן מילים שמורות שאין להשתמש בהן כמזהים שמקורן בשפת Java.

רשימת המילים השמורות שמקורן בשפת Java

abstract boolean byte char class const debugger double
enum export extends final float goto implements import
int interface long native package private protected public
short static super synchronized throws transient volatile public

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

רשימת מילים השמורות לדפדפנים

alert array blur boolean date document escape eval
focus function history image isNaN langth location math
name navigator number object onload open outerHeight parent
parseFloat regExp status string        

הצבת ערכים בתוך משתנים

מן הדוגמאות למעלה ודאי כבר הבחנתם כי הדרך השכיחה ביותר להציב (Assign) ערך במשתנה היא באמצעות סימן השוויון '=', אולם ישנן עוד אפשרויות להצבת ערכים במשתנים. בטבלה הבאה אציג כמה מהן.

דוגמאות קוד להצבת ערכים במשתנים

דוגמה להצבה תוצאת ההצבה
x=1; x=1
x=10; x++; x=3
x=3; x--; x=2
x=5; y=x + 5; y=10
x=10; y=2; z=x + y; z = 12
s="Hello"; s= Hello
x="Hello "; y="World"; z=x+y z=Hello World
x=2+5; x=7
x=(2+5)-6; x=1
x=3; y=3; z=x*y; z=9

 

אורך החיים והטווח של משתנים בשפת Javascript

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

לכל משתנה יש גם טווח - כלומר המקומות שמהם ניתן לגשת אליו, לקרוא את הנתונים שמאוחסנים בתוכו ולשים בו נתונים אחרים. באופן כללי בשפת Javascript ישנם שני סוגי משתנים בעלי טווחים שונים:

  • משתנים מקומיים (Local Variables)
  • משתנים גלובאליים (Global Variables)

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

משתנים שיוגדרו באמצעות var בתוך פונקציות יהיו תמיד משתנים מקומיים. משתנים אלה יייהרסו ברגע שהפונקציה תסתיים (על פונקציות נלמד באחד הפרקים הבאים במדריך). להלן דוגמה למשתנה מקומי המוגדר בתוך פונקציה:

function HelloMe() {
  var msg = "Hello World"; //LOCAL Variable
  alert (msg);
}

function HelloMe() {
  msg = "Hello World"; //GLOBAL Variable
  alert (msg);
}

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

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

אורך החיים של משתנים גלובאליים הוא החל מרגע שבו הם מוגדרים לראשונה ועד לסגירת הדף שבו הוגדרו. מבחינת הטווח שלהם, שמם מעיד עליהם שניתן לגשת אליהם מכל שורת קוד Javascript בתוך הדף שבו הוגדרו. משתנים גלובאליים ניתן להגדיר בשתי דרכים:

  1. הצבת ערך למשתנה חדש ללא שימוש ב - var;
  2. הגדרת משתנה מחוץ לפונקציה (זה לא משנה אם נעשה שימוש ב - var או לא).

להלן שתי דוגמאות קוד להגדרת משתנים גלובאליים:

<html>
<body>

<script type="text/javascript">
   var msg = "Hello "; //GLOBAL Variable
   msg1 = "World"; //GLOBAL Variable
   document.write(msg + msg1);

  function HelloMe() {
    msg2 = "Hello World"; //GLOBAL Variable
    alert (msg);
  }

</script>

</body>
</html>

כלים ומדריכים נוספים הקשורים לנושא זה

המדריך לפונקציות בשפת Javascript

המדריך לטיפוסי נתונים (Data Types) ב - Javascript


 
© 2010-2013  www.Devschool.co.il | מדיניות פרטיות | תנאי שימוש