Movatterモバイル変換


[0]ホーム

URL:


לדלג לתוכן
ויקיפדיההאנציקלופדיה החופשית
חיפוש

JavaScript

מתוך ויקיפדיה, האנציקלופדיה החופשית
יש להשלים ערך זה: בערך זה חסר תוכן מהותי.לא מעודכן. כמו כן חסר מידע על שימוש בג'אווה סקריפט כסביבת ריצה עצמאית. ייתכן שתמצאו פירוט בדף השיחה.
הנכם מוזמנים להשלים את החלקים החסרים ולהסיר הודעה זו. שקלו ליצור כותרות לפרקים הדורשים השלמה, ולהעביר את התבנית אליהם.
יש להשלים ערך זה: בערך זה חסר תוכן מהותי.לא מעודכן. כמו כן חסר מידע על שימוש בג'אווה סקריפט כסביבת ריצה עצמאית. ייתכן שתמצאו פירוט בדף השיחה.
הנכם מוזמנים להשלים את החלקים החסרים ולהסיר הודעה זו. שקלו ליצור כותרות לפרקים הדורשים השלמה, ולהעביר את התבנית אליהם.
ג'אווה סקריפט
JavaScript
פרדיגמותתכנות פונקציונלי,תכנות מונחה-אירועים, תכנות מבוסס-פרוטוקול, תכנות מכוון היבטים,תכנות גנרי,תכנות אימפרטיביעריכת הנתון בוויקינתונים
תאריך השקהמאי 1996עריכת הנתון בוויקינתונים
מתכנןברנדן אייך
מפתחנטסקייפ
הושפעה על ידישפת C
השפיעה עלActionScript,AssemblyScript,CoffeeScript,Dart,Haxe,JS++,Opa,TypeScript
סיומתjs .cjs .mjs.
אתר רשמי
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית

JavaScriptעברית:ג'אווה סקריפט, בקיצור:JS) היאשפת תכנות המשמשת לפיתוחאתרי אינטרנטואפליקציות. היא גם אחת מהטכנולוגיות הבסיסיות שיוצרות את האינטרנט, יחד עםHTML ו־CSS. נכון ל־2023, 98.7%מהאתרים משתמשים ב־Javascript בצד הלקוח של האתר שלהם,[1] לעיתים קרובות תוך שימושבספריות חיצוניות לשם כך. לכלהדפדפנים הגדולים ישמנועי הרצה להריץקוד Javascript על המכשירים שלהמשתמשים.

Javascript היאשפת תכנות עילית, לעיתיםמתקמפלת בדיוק בזמן, שמממשת אתתקן ECMAScript.[2] יש בהטיפוסיות דינאמית,תכנות מונחה עצמים מבוססתבניות (Prototye) ופונקציות שהן חלק טבעי מהשפה(אנ'). יש בה מספרפרדיגמות, ביניהןתכנות מונחה אירועים,תכנות פונקציונלי ותכנות אימפרטיבי. יש בהממשקים (APIs) לעבודה עם טקסט, תאריכים,ביטויים רגולריים,מבני נתונים סטנדרטיים ו־Document Object Model (DOM).

תקן ECMAScript ש־Javascript מממשת אינו כולל ממשקיפלט וקלט כמוממשקי תקשורת,אחסון(אנ') אוגרפיקה. בפועל, דפדפנים אוסביבות הרצה שונות מספקות ל־Javascriptממשקים עבור יכולות אלה.

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

אף על פי ש־Java ו־Javascript דומות בשם ובסינטקס(אנ'), שתי השפות הן נפרדות ושונות מהותית אחת מהשנייה.

נכון לשנת 2023, JavaScript היא שפת התכנות הפופולרית ביותר בעולם בקרב מפתחים.[3]

היסטוריה

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

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

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

אפיוני השפה

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

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

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

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

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

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

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

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

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

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

דוגמה לתוכנית JavaScript

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

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

<inputtype="text"id="primetest"value=""/><inputtype="button"onClick="communicate()"value="Check"/><scripttype="text/javascript">functionget_factor(n){letsr=Math.sqrt(n)// try to find a factor that is not 1.for(leti=2;i<=sr;i+=1){if(n%i===0)// is n divisible by i?returni}return1// n is a prime.}// End of get_factor function.functioncommunicate(){// communicate with the user.leti=document.getElementById("primetest").value;// get checked number, using DOM.// is it a valid input?if(isNaN(i)||(i<=0)||(Math.floor(i)!==i)){alert("The checked object should be a whole positive number");return}if(i==1){alert("1 is not a prime");return}letfactor=get_factor(i)if(factor===1)alert(i+" is a prime")elsealert(i+" is not a prime, "+i+"="+i/factor+"x"+factor)}// End of communication function</script>

אבטחה בתוכניות JavaScript

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

מאחר ש-JavaScript היא שפתצד לקוח שמריצה פקודות על גבי המכשיר של המשתמש, נוצרו ניסיונות רבים לגנבת מידע אישי על ידי שימוש ב־XSS. בעקבות זאת, נוצרו כלים שמשמשים לאבטחה נגד XSS וקוד זדוני כמו התוסף noscript, וגם הדפדפנים עצמם פיתחו מנגוני הגנה נגד התקפות אפשריות.

JavaScript Manipulation

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

בדפדפנים ישנים ופחות מאובטחים, ניתן להזריק ולהריץ קוד שלא מוזכר כלל בקוד מקור, בכל דף אינטרנט שמופיע בדפדפן. שיטה זו נקראת JavaScript manipulation.ב־JavaScript manipulation מכניסים את פקודות הסקריפט בשורת הכתובת של הדפדפן, ולרוב הוא מיועד להשפיע על ה־DOM.דוגמה:

javascript:alert(document.cookie);

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

על מנת להגן מפני התקפותהינדוס חברתי, השימוש בשיטה זו נחסם בדפדפנים המודרניים. כך לדוגמה, במוזילה פיירפוקס החל מגרסה 6, קוד שהוזרק בשיטה זו לא יתייחס לתוכן הדף, ומשכך, לא יתאפשר לו להשפיע על ה־DOM. בגוגל כרום ובאינטרנט אקספלורר מגרסה 9 ומעלה, כאשר מדביקים כתובות כאלה בשורת הכתובת, הפרוטוקול (#"ltr">

alert(document.cookie);

עם זאת, במרבית הדפדפנים המתקדמים קיימים כלי פיתוח ייעודיים, בהם ניתן לבצע JavaScript manipulation בהיקף נרחב.

יישומי JavaScript

[עריכת קוד מקור |עריכה]
ערך מורחב –ספריית JavaScript

בזכות הפופולריות שלה, JavaScript זכתה להרבה ספריות ומהדרים, מלבד השימוש כשפת תכנות וחישוב ובניית קוד פשוט להרצה בדפדפן [הנקרא ונילה], המאפשרים לבנות בעזרתה יישומים שונים. רוב היישומים נבנים ב־Node.js אך לפעמים מהודרים לקוד JavaScript רגיל על מנת להריץ אותם בדפדפנים.

לעבודה קלה עם ה-DOM מוכרת הספרייהjQuery.

לבניית אפליקציותwebfront-end מוכרות הספריותAngular,React, Ember.js,Vue.js, ו־Svelte.

לבניית אפליקציות למכשירים המריציםאנדרואיד ו־iOS מוכרות הספריות ReactNative, ו־NativeScript שמהדרות קוד המתבסס על React ו־Angular בהתאמה לקוד הנקרא נייטיבי, כלומר אפליקציות הנראות כאילו נכתבו בשפות הנייטיביות לכל פלטפורמה, Java עבוראנדרואיד, ו־Objective-C עבור iOS. לעומתן מוכרת גם הספרייה ionic שמהדרת את ה-JavaScript לאפליקצייות היברידיות, הממנפות את הקוד לבניית תוכנות הנראות רגילות אך למעשה מבוססות web גם בזמן הריצה. תוכנות אלה עדיין מקבלות גישה לכלים השמורים ליישומונים נייטיביים כמו שימוש במצלמה. ספריות אלה לרוב מבוססות על תחביר הדומה ל-HTML.

לבניית שרתי אינטרנט הפועלים בצורה א-סינכרונית ומבוססים על ניתוב, מוכרת הספרייהExpress.js. ספרייה זו אינה מבוססת על HTML כברירת מחדל, אלא רק על JavaScript לבניית API מבוססJSON לדוגמה, אך למעשה היא יכולה להגיש כל דבר, החל מקבצים וכלה ב־HTML בו מוזרק מידע. היא עושה שימוש בפרוטוקליHTTP על מנת להעביר מידע מהלקוח ובחזרה.

לבניית תוכנות למחשבים עם מערכת הפעלהWindows,macOs, אולינוקס מוכרת הספרייה Electron שמאחורי הקלעים מתקינה סביבת ריצה ייעודית הנקראתכרומיום (שהיא גם הליבה שלגוגל כרום) ומציגה דפי אינטרנט בתוכנות מחשב רגילות המקבלות גם גישה לפונקציות השמורות לתוכנות בלבד כמו שליטה מלאה על הקבצים ואפשרות התקנה.

ייבוא קובצי JS

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

ניתן לכתוב JavaScript ישירות בתוךתגית script ב־HTML, אולם גישה נפוצה יותר היא לייבא סקריפט מתוך קובץ נפרד, באמצעות הפרמטר src (קיצור של source) בתגית script.דוגמה:

<scripttype="text/javascript"src="filename.js"></script>

כאשר filename.js הוא קובץ ה.js אליו מפנים.

קובץ ה־.js מכיל את כל הפקודות המופיעות בתוך התגית<script> ושהדפדפן יריץ.

כמו כן, קובץ JavaScipt יכול לייבא קבצים נוספים שאינם מוצהרים במסמך ה־HTML בצורתו ההתחלתית. לדוגמה:

letmyScript=document.createElement("script");// יצירת אלמנט סקריפט חדשmyScript.type="text/javascript";// קביעת סוג הסקריפטmyScript.src="filename.js";// קביעת הקובץ שיש לייבאdocument.head.appendChild(myScript);// הכנסת האלמנט למסמך, על־מנת להריץ אותו

בדוגמה זו, ארבע שורות אלה, הכלולות באחד הסקריפטים הקיימים בדף, יוצרות אלמנט script חדש, המייבא את הקובץ "filename.js", ומוסיפות אותו למסמך ה־HTML (לסוף אלמנט ה־head של המסמך).

ראו גם

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

קישורים חיצוניים

[עריכת קוד מקור |עריכה]
מיזמיקרן ויקימדיה
ויקיספר ספר לימוד בוויקיספר:JavaScript
ויקישיתוף תמונות ומדיה בוויקישיתוף:JavaScript

הערות שוליים

[עריכת קוד מקור |עריכה]
  1. ^Usage Statistics of JavaScript as Client-side Programming Language on Websites, December 2023, w3techs.com
  2. ^ECMAScript® 2020 Language Specification
  3. ^על פינתוני GitHub וסקר StackOverflow
  4. ^Introduction, web.stanford.edu
  5. ^JavaScript Function Parameters, www.w3schools.com
בקרת זהויותעריכת הנתון בוויקינתונים
אוחזר מתוך "https://he.wikipedia.org/w/index.php?title=JavaScript&oldid=39526608"
קטגוריות:
קטגוריות מוסתרות:

[8]ページ先頭

©2009-2025 Movatter.jp