פרק 2: ערכים בסיסיים

 

·                ערכים

·                משתנים

·                קבועים

·                טבלת ה-Unicode

·                תרגילים

 

 

 

ערכים

 

JavaScript תומכת בסוגי הערכים הבאים:

-                ערכים מספריים שלמים וממשיים, כגון: 24 ו- 2.5

-                מחרוזות תווים, כגון: "Israel is beautiful"

-                הערך null. ערך זה מתאר ב-JavaScript (בדומה לשפות אחרות) מצב מיוחד של אי-קיום.  כיוון ש-JavaScript רגישה להבדלים בין אותיות קטנות לגדולות יש לרשום null ולא Null, או NULL או כל ואריאציה אחרת.

-                הערכים הבוליאנים: true או false

-                undefined. זהו ערך מטיפוס בסיסי שבדומה ל-null מעיד על מצב מיוחד. יוסבר בהמשך.

כפי שניתן לראות, אין ב-JavaScript הבחנה בין ערכים מספריים מטיפוסים שונים (אין ב-JavaScript טיפוסים מוגדרים מראש כגון integer, float, double ואחרים) ובין ערכים מספריים לערכים שאינם מספריים. 'ערך' ב-JavaScript יכול להיות כל אחד מהטיפוסים שנסקרו. ב-JavaScript טיפוסי הערך הבסיסיים לא הוגדרו מראש כמו ב-Java ובשפות אחרות.

 

כפי שיוסבר בהמשך (ביתר פירוט) כדאי כבר עתה לדעת כי ב-JavaScript בדומה לשפות מוכרת אחרות (Java, C\C++ ואחרות...) ניתן למקם בסוף כל משפט את הסימן נקודה פסיק (: ).  יש מקרים שבהם חייבים לעשות זאת, אך בדרך כלל ניתן לוותר על הנקודה-פסיק. אני ממליץ תמיד להוסיף אותה כדי לקבל קוד בהיר יותר.

 

JavaScript נחשבת ל- "dynamically typed language". המשמעויות שיש לכך הן:

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

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

 

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

var result;

בהמשך, להכניס לתוכו את הערך 120:

result = 120;

ולאחר מכן, להכניס לתוכו ערך מטיפוס אחר (מחרוזתי):

result = "Israel is GREAT !";

כפי שוודאי שמת לב, באף שלב מבין השלבים שתוארו, אין צורך בביצוע casting.

 

בדומה ל-JAVA, גם ב-JavaScript ניתן להשתמש באופרטור + כדי לשרשר מחרוזות תווים.

result = "Israel is " + "GREAT";

התוצאה של משפט זה תהיה המחרוזת: "Israel is GREAT" , וזהו גם הערך שיישמר בתוך המשתנה result.

 

בדומה ל- JAVA, גם ב-JavaScript ניתן להשתמש באופרטור + כדי לשרשר מחרוזת תווים עם ערך מטיפוס שאיננו מחרוזתי, כגון, ערך מספרי.

result = "The result is : " + 120;

במקרה זה, למשל, הערך המספרי יתורגם למחרוזת תווים וישורשר למחרוזת "The result is".

 

 

 

משתנים

 

משתנים ב-JavaScript מהווים שמות שמייצגים ערכים. בקביעת שמו של משתנה יש למלא אחר הכללים הבאים:

1.              שם המשתנה חייב להתחיל באות או בקו תחתי ("_").

2.              שמו של משתנה יכול להיות מורכב אך ורק מאותיות, ספרות וקווים תחתיים.

3.              למשתנה יש לתת שם שמעיד על תפקידו.

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

 

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

 

ב-JavaScript לא חייבים להצהיר על המשתנה לפני שמשתמשים בו. ניתן, למשל, לרשום משפט השמה של ערך לתוך שם חדש של משתנה שרוצים בקיומו, ובכך המשתנה כבר ייווצר באופן אוטומטי.

כך, למשל, ניתן לכתוב את השורה הבאה, ולקבל בהמשך אחריה את האפשרות להשתמש במשתנה חדש ששמו num:

num = 120

 

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

לדוגמא:

var num;

 

ניתן גם, בדומה ל-Java, לשלב בשורת ההצהרה על המשתנה את איתחולו.

לדוגמא:

var num = 120;

 

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

 

<!-- file name : SwapNumbers.html -->

<!-- 2000(c) Zindell Publishing House Ltd. -->

 

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

 

<HTML>

 

  <HEAD>

    <TITLE>SwapNumbers.html</TITLE>

      <SCRIPT LANGUAGE="JavaScript1.2">

        <!--

          var num1, num2, temp;

          num1 = 3;

          num2 = 4;

          document.write("num1 = "+num1+"    num2 = "+num2);

                                     document.write("<BR>");

          temp = num1;

          num1 = num2;

          num2 = temp;

          document.write("Now the numbers in the two variables are swapping ... <BR>");

          document.write("num1 = "+num1+"    num2 = "+num2); 

        -->

      </SCRIPT> 

   </HEAD>

 

  <BODY>

  </BODY>

 

</HTML>

 

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

 

הערך המיוחד undefined איננו מוכר על ידי הדפדפן Internet Explorer 5.0 ולכן, את התכנית הבאה, אשר מדגימה תכונה זו כדאי לבדוק באמצעות דפדפן אחר, כגון הדפדפן  Netscape Nevigator.

 

<!-- file name : EvaluationDemo.html -->

<!-- 2000(c) Zindell Publishing House Ltd. -->

 

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

 

<HTML>

 

  <HEAD>

    <TITLE>EvaluationDemo.html</TITLE>

      <SCRIPT LANGUAGE="JavaScript1.3">

          var declaredVar;

          if (declaredVar==undefined)

                                  {

                                    document.write("A variable that was declared using var");

                                                document.write("consists the undefined value");

                                  }

                                  else

                                  {

                                     document.write("A variable that was declared using var");

                                                 document.write("DOES NOT consist the undefined     

                value");

          }

      </SCRIPT> 

   </HEAD>

 

  <BODY>

  </BODY>

 

</HTML>

 

 

הערך המיוחד undefined מתנהג כערך מטיפוס false כאשר הוא ממוקם במקום שבו אמור להיות ערך בוליאני (בתוך תנאי למשל).

 

הערך המיוחד null מופיע כחלק מביטוי חשבוני הוא נחשב ל-0 לצורך החישוב המתימטי. כאשר הערך המיוחד null מופיע במקום שבו אמור להיות ביטוי לוגי הוא נחשב ל-false.

 

בדומה ל-C\C++ גם ב-JavaScript קיימת ההבחנה בין משתנים מקומיים למשתנים גלובליים. משתנים שמוגדרים בתוך פונקציות נחשבים למשתנים מקומיים, ובתור שכאלה טווח ההכרה שלהם הוא הפונקציה בלבד, ומשתנים שמוגדרים מחוץ לכל פונקציה שהיא נחשבים למשתנים גלובליים, ובתור שכאלה טווח ההכרה שלהם הוא כל התכנית (בכל המסמך).

 

הגישה למשתנים גלובליים שהוגדרו בwindow או frame אחרים אפשרית תוך ציון השם של אותו window או frame לפני שם המשתנה ובצירוף נקודה ביניהם.

 

 

קבועים

 

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

 

String Literals – קבוע מחרוזתי

קבוע מחרוזתי ב-JavaScript, בדומה לשפות אחרות, הינו רצף של 0 או יותר תווים שמתוחמים בגרשיים כפולים (או גרשיים בודדים) בתחילת הרצף ובסופו.

דוגמאות:

"abcd"

'Hello'

"120"

"We love our country"

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

 

התכנית הבאה מדגימה זאת.

 

<!-- file name : StringDemo.html -->

<!-- 2000(c) Zindell Publishing House Ltd. -->

 

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

 

<HTML>

 

  <HEAD>

    <TITLE>StringDemo.html</TITLE>

      <SCRIPT LANGUAGE="JavaScript1.3">

          var num;

                          num = "ABCD".length;

                          document.write("The number of characters in ABCD is " + num);

                          var tav;

                          tav = "ABCD".charAt(1);

                          document.write("<BR>The character in the index 1 is " + tav);

      </SCRIPT> 

   </HEAD>

 

  <BODY>

  </BODY>

 

</HTML>

 

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

 

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

 

המשמעות

התו

הדפסת גרש אחד בודד

\

הדפסת גרשיים כפולים

"\

הדפסת לוכסן יחיד

\\

במקום ה-XXX רושמים קוד בבסיס 8 של תו מבין התווים שבטבלת Latin-1 ובדרך זו מקבלים את התו. משמש להדפסת תווים מיוחדים כגון \251, סימן זכויות היוצרים.

XXX\

במקום ה-XX רושמים קוד בבסיס 16 של תו מבין התווים שבטבלת Latin-1 ובדרך זו מקבלים את התו. משמש להדפסת תווים מיוחדים כגון \xA9, סימן זכויות היוצרים.

\xXX

במקום ה-XXXX רושמים קוד בבסיס 16 של תו מבין התווים שבטבלת ה-unicode ובדרך זו מקבלים את התו. משמש להדפסת תווים מיוחדים כגון \u00A9, סימן זכויות היוצרים.

\uXXXX

 

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

C:\\autoexec.bat

יש לרשום שני לוכסנים במקום אחד כדי שהקבוע המחרוזתי אכן יתאר מחרוזת שיש בה לוכסן.  בדומה ל-C\C++ גם ב-JavaScript יש לרשום \\ כאשר הכוונה ל- \.

 

Integers- קבוע מספרי שלם

מספרים שלמים ניתן לבטא בבסיס 16, בבסיס 10 ובבסיס 8.

מספר שלם בבסיס  8 הוא סידרה של ספרות עם 0 בתחילתה.

לדוגמא:    022  הוא מספר בבסיס 8 ששקול למספר 18 בבסיס 10.

מספר שלם בבסיס 16 הוא סידרה של ספרות שמתחילה ה- 0x (או 0X).

לדוגמא:    0x12  הוא מספר בבסיס 16 ששקול למספר 18 בבסיס 10.

מספר שלם בבסיס 10 הינו סידרה של ספרות שאיננה מתחילה ב-0.

 

התכנית הבאה מדגימה אפשרויות אלה.

 

<!-- file name : IntegerLiteral.html -->

<!-- 2000(c) Zindell Publishing House Ltd. -->

 

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

 

<HTML>

 

  <HEAD>

    <TITLE>IntegerLiteral.html</TITLE>

      <SCRIPT LANGUAGE="JavaScript1.3">

                          var sum;

                          sum = 014;

                          document.write("<BR>sum="+sum);

                          sum = 12;

                          document.write("<BR>sum="+sum);

                          sum = 0xC;

                          document.write("<BR>sum="+sum);

                          document.write("<BR>The three numbers were written in different bases");

                          document.write("<BR>but their value is the same.");

      </SCRIPT> 

   </HEAD>

 

  <BODY>

  </BODY>

 

</HTML>

 

קבועים שהם מספרים ממשיים

מספרים ממשיים שמופיעים כקבועים יכולים לכלול את החלקים הבאים:

מספר שלם בבסיס 10, נקודה עשרונית, מספר שלם נוסף בבסיס 10 אשר מתאר את חלקו העשרוני של המספר הממשי וה-exponent. ה-exponent הוא האות "e" או "E" כשאחריה מספר שלם שיכול להיות חיובי או שלילי.

כדי שמספר ייחשב למספר ממשי הוא חייב לכלול לפחות סיפרה אחת ונקודה עשרונית (או exponent).

דוגמאות של מספרים ממשיים:

1.24

-4E33

.23

 

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

 

<!-- file name : FloatingLiteral.html -->

<!-- 2000(c) Zindell Publishing House Ltd. -->

 

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

 

<HTML>

 

  <HEAD>

    <TITLE>FloatingLiteral.html</TITLE>

      <SCRIPT LANGUAGE="JavaScript1.3">

                          var num;

                          num = 0.14E23;

                          document.write("<BR>num="+num);

                          num = 0.12e-234;

                          document.write("<BR>num="+num);

                          num = 10e44;

                          document.write("<BR>num="+num);

      </SCRIPT> 

   </HEAD>

 

  <BODY>

  </BODY>

 

</HTML>

 

 

Boolean Literals – קבועים לוגיים

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

 

Array Literals – קבועים שמהווים איברים במערך

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

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

Names = ["DANY" , "RONY" , "SHLOMY", "DOV"];

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

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

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

Names = ["DANY" , "RONY"', , "SHLOMY", "DOV"];

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

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

Names = ["DANY" , "RONY" , "SHLOMY", "DOV",];

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

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

Names = [,"DANY" , "RONY" , "SHLOMY", "DOV",];

נושא זה יורחב בהמשך.

 

 

Object Literal – אובייקטים שנחשבים לקבועים

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

 

התכנית הבאה מדגימה את יצירתו של Object Literal.

 

<!-- file name : ObjectLiteral.html -->

<!-- 2000(c) Zindell Publishing House Ltd. -->

 

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

 

<HTML>

 

  <HEAD>

    <TITLE>ObjectLiteral.html</TITLE>

      <SCRIPT LANGUAGE="JavaScript1.3">

        var newStudent;

        newStudent = {name: "Dany", age: 22, country: "ISRAEL"};

        document.write("<BR>The details of newStudent are : ");

                        document.write("<BR>name : " + newStudent.name);

                        document.write("<BR>age : " + newStudent.age);

                        document.write("<BR>country : " + newStudent.country);                

      </SCRIPT> 

   </HEAD>

 

  <BODY>

  </BODY>

 

</HTML>

 

 

יש להימנע מלהשתמש ב-Object Literal בתחילתו של משפט כיוון שזה עלול לגרום לתקלה (error) בפעולת הדפדפן.

 

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

 

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

 

<!-- file name : ObjectLiteralAsArray.html -->

<!-- 2000(c) Zindell Publishing House Ltd. -->

 

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

 

<HTML>

 

  <HEAD>

    <TITLE>ObjectLiteralAsArray.html</TITLE>

      <SCRIPT LANGUAGE="JavaScript1.3">

        var newStudent;

        newStudent = {"1": "Dany", "2": 22, "3": "ISRAEL"};

        document.write("<BR>The details of newStudent are : ");

        document.write("<BR>"+newStudent[1]);

        document.write("<BR>"+newStudent[2]);

        document.write("<BR>"+newStudent[3]);

   </SCRIPT>       

   </HEAD>

 

  <BODY>

  </BODY>

 

</HTML>

 

 

טבלת ה-Unicode

 

טבלת ה-Unicode היא טבלה שמעניקה לכ- 64000 תווים קודים מתאימים. הטבלה מתארת את מרבית השפות המדוברות בעולם, וכמו כן, את מרבית הסימנים הטכניים שמקובלים בשטחי המדע השונים.

 

טבלת ה-Unicode מהווה, למעשה, הרחבה של טבלת ה-ASCII (American Standart Code for Information Interchange). התחלתה של טבלת ה-Uunicode (128 התווים הראשונים) היא העתק מדוייק של טבלת קודי ה-ASCII. הקודים בטבלת ה-Unicode מתוארים באמצעות ערכים מספריים שלמים שכדי להחזיקם יש צורך ב-16 ביטים. את קודי ה-Unicode מתארים באמצעות מספר בן ארבע ספרות בבסיס 16 כשלפניו האות U. כך למשל, את התו ‘A’ מתארים בטבלת ה-Unicode באמצעות הקוד U0041.

 

JavaScript בגרסאות שקדמו לגרסה 1.3 לא תומכת בשימוש בטבלת ה-Unicode.

 

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

 

תו ששייך לטבלת ה-Unicode ניתן לתיאור באמצעות לוכסן הפוך כשאחריו האות u ואחריה 4 ספרות (או אחת האותיות: A, B, C, D, E או F). כך למשל, את תו זכויות היוצרים ניתן לתאר באמצעות "\u00A9".

 

 

 

תרגילים

 

1.     כתוב/כתבי תכנית ב-JavaScript אשר כוללת שני משתנים שמכילים שני ערכים מספריים שלמים. התכנית מחליפה את תוכנם של שני המשתנים זה בזה מבלי לעשות שימוש במשתנה עזר.

2.     כתוב/כתבי תכנית ב-JavaScript  אשר כוללת את יצירתו של אובייקט אשר מתאר את הקורס, ומהווה Object Literal. לאחר יצירתו של האובייקט התכנית תדפיס את ערכי תכונותיו תוך שהיא מתייחסת לאובייקט שנוצר כאל מערך.

 

 

 

 

 

 

2000 © All the rights reserved to Haim Michael & Zindell Publishing House Ltd.

 

No parts of the contents of this paper may be reproduced or transmitted in any form by any means

without the written permission of the publisher !  This book can be used for personal use only !!!

 

 

Brought to you by Zindell 

(http://www.zindell.com)

 

 

 

 

 

 

לנוחיותך, להלן תוכן העניינים של הספר:

 

פרק 1 : הבסיס
פרק 2 : ערכים בסיסיים
פרק 3 : אופרטורים
פרק 4 : משפטי בקרה ולולאות
פרק 5 : פונקציות
פרק 6 : אובייקטים
פרק 7 : אובייקטים מובנים בשפה
פרק 8 : אופן פעולת האובייקטים
פרק 9 : תבניות טקסט
פרק 10 : שילוב של JavaScript ו- HTML
פרק 11 : טיפול באירועים
פרק 12 : האובייקטים שנוצרים בדפדפן
פרק 13 : האובייקט Navigator
פרק 14 : האובייקט Window
פרק 15 : האובייקט Document
פרק 16 : האובייקט Location
פרק 17 : האובייקט History
פרק 18 : יצירת cookies
פרק 19 : האובייקטים Link ו- Anchor
פרק 20 : האובייקט Image
פרק 21 : יצירת Image Map
פרק 22 : האובייקט Form
פרק 23 : טכנולוגית ה- LiveConnect