JavaScript

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


שגיאות פרמטריות בתבנית:שפת תכנות

שימוש בפרמטרים מיושנים ריקים [ גרסה אחרונה, תאריך גרסה אחרונה ]

ג'אווה סקריפט
JavaScript
פרדיגמות תכנות מונחה דגמי אב, תכנות מונחה אירועים, תכנות מונחה עצמים, תכנות פונקציונלי, metaprogramming
תאריך השקה מאי 1996 עריכת הנתון בוויקינתונים
מתכנן ברנדן אייך
מפתח נטסקייפ
גרסה אחרונה ECMAScript 2021 (יוני 2021), ECMAScript 2022 (22 ביולי 2021) עריכת הנתון בוויקינתונים
הושפעה על ידי שפת C
השפיעה על jscript, haxe
סיומת js .cjs .mjs.
האתר הרשמי
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית

JavaScript (בעברית: ג'אווה סקריפט, בקיצור: JS) היא שפת תכנות דינמית כללית מונחית־עצמים המותאמת לשילוב באתרי אינטרנט ורצה על ידי הדפדפן בצד הלקוח. כיום השפה יכולה לרוץ באופן עצמאי כמו שפות אחרות בעזרת סביבות הרצה כמו Node.js. השפה מרחיבה את יכולות שפת התגיות הבסיסית HTML ומאפשרת בכך ליצור יישומי אינטרנט מתוחכמים יותר. למעשה, רוב אתרי האינטרנט המודרניים משלבים שפה זו. היא ידועה בעיקר כשפה המוטבעת בדפי HTML על מנת להציג דפי רשת דינמיים שמשולבת בהם תוכנה. קוד ה־JavaScript שמשולב בדף HTML מבוצע על ידי הדפדפן. JavaScript נוחה מאוד לעבודה עם DOM ולתפעול DHTML.

קובצי JavaScript מזוהים בסיומת "js.".

על בסיס סביבת הריצה של הדפדפנים, נבנו סביבות ריצה מקומיות להרצה של ג'אווה סקריפט במחשבים אישיים ובשרתים (Node.js, Deno.js).

היסטוריה[עריכת קוד מקור | עריכה]

השפה פותחה על ידי חברת נטסקייפ בשנת 1995, ויושמה לראשונה בדפדפן נטסקייפ 2.0. הגרסה הייתה JavaScript 1.0. שמה המקורי היה LiveScript, (בעברית: לייבסקריפט) והוא שונה ל־JavaScript מטעמי פרסום כאלו ואחרים וכדי להראות לקהל המתכנתים של אותה התקופה שהשפה דומה לJava (שהייתה אז השפה המרכזית לתכנות אתרים באינטרנט), רק שהיא מעוצבת לתכנות אתרים (שלא כמו Java, שהיא שפה שמועצבת לבניית אפליקציות לטלפונים ניידים ושולחן העבודה). בנוסף לכתיבת תסריטים בצד הלקוח (בדפדפן), מאפשרת JavaScript כתיבת תסריטים גם בצד השרת, לתפעול בשרת אינטרנט. התחביר של שפת ActionScript, שמיוחדת לפלאש, נגזר משפה זו. קיימת גרסה תקנית של השפה הקרויה ECMAScript.

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

אפיוני השפה[עריכת קוד מקור | עריכה]

השפה היא שפה שעוברת תהליך אינטרפרטציה (פירוש) ולא קומפילציה (הידור).[1] משמעות הדבר שקוד המקור לא צריך לעבור תהליך של קימפול (הידור) לשפת ביניים ואז להריץ אותו, אלא המפרש (interpreter) קורא שורה שורה או מקבץ של שורות (למשל תחום הכרזה של פונקציה) ומריץ אותן ישירות. תהליך זה מקל לעיתים להבין היכן התבצעה שגיאה ומאפשר דיבוג קל יותר של השפה.

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

טיפוסים פרמיטיביים עוברים by value. כלומר, המפרש מעביר לפונקציה העתק של האובייקט ולא את האובייקט המקורי. טיפוסים מורכבים או אובייקטים עוברים by reference כלומר המפרש מעביר רפרנס (מעין מצביע) לערך ואינו יוצר העתק שלו.[2]

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

השפה מבוססת "תכנות מונחה דגמי אב" (Prototypes), שהוא סוג (לא נפוץ) של תכנות מונחה־עצמים. השפה בעיקרה היא שפה מבוססת אובייקטים (אפילו טיפוס בוליאני [Boolean] הוא למעשה אובייקט). האובייקטים בשפה הם מערכים אסוציאטיביים. תכנות מונחה עצמים אפשרי על ידי הגדרת מחלקה (class) החל מגרסה ES6, או באמצעות יצירת אובייקט והצמדת מאפיינים אליו (בגרסה ES5 ומטה). כל מאפיין באובייקט יכול לתפקד כמשתנה או פונקציה.

ישנם שלושה סוגי אובייקטים: אובייקטים של השפה כמו משתנים (כמו אובייקט תאריכי Date ואובייקט מחרוזתי), אובייקטים של הדפדפן (כמו אובייקטי window ו־document), ואובייקטים שיוצר המשתמש. אובייקטים של הדפדפן אינם נתמכים בגרסאות הערות במיטה שאינה דפדפן (כגון nodeJS) אלה אם כן משתמשים בספריות או חבילות מסוימות הנועדו לתת לקוד עוד פונקציות כדי לבנות (לדוגמה): אפליקציות לשולחן העבודה, אפליקציות לטלפון, משחקים מסובכים (משחקי תלת-מימד לדוגמה), סימולציות ועוד. . השפה תומכת בהרחבת מתודות של אובייקטים טבעיים בשפה כמו מחרוזות או Date באמצעות Prototyping.

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

תיאור אירוע
בעת טעינה onload
בעת לחיצה onclick
בעת סגירת דף onabort
בעת סגירת חלון Onunload
בעת יציאה מפוקוס Onblur
בעת שינוי אובייקט onchange
בעת בחירה onselect
בעת שליחת טופס onsubmit
בעת שגיאה onerror
בעת מעבר עכבר onmouseover
בעת עזיבת סימן העכבר את האובייקט onmouseout

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

דוגמה לתוכנית JavaScript[עריכת קוד מקור | עריכה]