Menu

מה זה JavaScript? שפת האינטרנט בהסבר פשוט

מה זה JavaScript באמת, איפה היא רצה, למה משתמשים בה ובמה היא שונה מ-Java ומ-TypeScript: היכרות מבוססת למתחילים.

בדף הזה יש עורכים שאפשר להריץ - לערוך, להריץ ולראות את הפלט מיד.

JavaScript היא שפת האינטרנט

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

היום היא רצה גם מחוץ לדפדפן. Node.js, Deno ו-Bun מאפשרים להשתמש ב-JavaScript לשרתים, לכלי שורת פקודה, לסקריפטים של build ול-APIs. אותה שפה מפעילה את ה-frontend וגם את ה-backend, וזה חלק גדול מהסיבה שהיא כל כך נפוצה.

טעימה קטנה מאיך ש-JavaScript נראית:

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

איפה JavaScript רצה

JavaScript עצמה היא רק מפרט של שפה (שנקרא ECMAScript). כדי להריץ אותה בפועל צריך מנוע: תוכנה שקוראת את הקוד שלכם ומבצעת אותו. שניים שתפגשו:

  • דפדפנים. Chrome ו-Edge משתמשים ב-V8. Firefox משתמש ב-SpiderMonkey. Safari משתמש ב-JavaScriptCore. פתחו עמוד, לחצו F12 והדביקו JavaScript בלשונית Console: היא רצה מיד.
  • Node.js. לוקח את V8 אל מחוץ לדפדפן ונותן לו גישה למערכת הקבצים, לרשת ולמערכת ההפעלה. זה מה שמאפשר JavaScript בצד השרת.
// הריצו בקונסול של הדפדפן:
document.title = "כותרת חדשה ללשונית";

// הריצו עם Node.js:
// $ node script.js

JavaScript בדפדפן יכולה לגעת בעמוד (ה-DOM), אבל לא במערכת הקבצים שלכם. JavaScript ב-Node.js יכולה לקרוא קבצים ולפתוח sockets, אבל אין לה עמוד לשנות. אותה שפה, כוחות על שונים.

למה משתמשים ב-JavaScript

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

  • דפי אינטרנט אינטראקטיביים. אימות טפסים, תפריטים נפתחים, חלונות קופצים, חיפוש חי, גרירה ושחרור.
  • אפליקציות עמוד יחיד (SPA). Gmail, Figma, Notion, Linear: אפליקציות שלמות שמוצגות ומתעדכנות על ידי JavaScript, בדרך כלל דרך framework כמו React, Vue או Svelte.
  • שרתי backend. REST APIs, נקודות קצה של GraphQL ושירותים בזמן אמת שנבנים עם Node.js, Express, Fastify או NestJS.
  • כלי build ופיתוח. Bundlers (Vite, esbuild, webpack), linters (ESLint), מריצי בדיקות (Vitest, Jest).
  • אפליקציות חוצות פלטפורמות. אפליקציות דסקטופ דרך Electron (VS Code, Slack, Discord) ואפליקציות מובייל דרך React Native.

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

איך JavaScript רצה בפועל

מודל מחשבתי פשוט מאוד: אתם כותבים קוד מקור, המנוע מנתח אותו לייצוג פנימי ואז מבצע אותו. מנועים מודרניים משתמשים בקומפילציית JIT (just-in-time): הם מתחילים לפרש מהר, ואז מבצעים אופטימיזציה לנתיבי קוד חמים והופכים אותם לקוד מכונה בזמן שהתוכנית רצה.

לא מקמפלים JavaScript לקובץ בינארי לפני ההפצה. מוסרים את קוד המקור לדפדפן (או ל-Node) והמנוע דואג לשאר:

הדביקו את זה בקונסול של הדפדפן או שמרו כ-greet.js והריצו node greet.js: אותו פלט בשני המקרים. בלי שלב קומפילציה, בלי הגדרות build, בלי שום דבר להתקין לקוד פשוט כזה.

JavaScript מול Java

השמות נשמעים דומים והשפות לא דומות. JavaScript קיבלה את השם הזה ב-1995 כדי לרכוב על הפופולריות של Java באותה תקופה, החלטה שיווקית שמבלבלת מתחילים מאז.

JavaScriptJava
טיפוסיםדינמייםסטטיים
רצה עלדפדפנים, Node.jsJVM
פרדיגמהרב פרדיגמית, מבוססת prototypesOOP מבוסס מחלקות
קומפילציהJIT, בלי צורך בשלב buildקומפילציה ל-bytecode מראש

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

JavaScript מול TypeScript

TypeScript היא JavaScript עם מערכת טיפוסים שהוצמדה אליה. כותבים קוד עם הגדרות טיפוסים, הקומפיילר של TypeScript בודק אותן, והפלט הוא JavaScript רגיל שרץ בכל מקום ש-JavaScript רצה.

// JavaScript - types are implicit:
function add(a, b) {
    return a + b;
}

// TypeScript - types are explicit:
function add(a: number, b: number): number {
    return a + b;
}

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

היסטוריה קצרה, כדי שהמוזרויות יהיו הגיוניות

JavaScript נכתבה בעשרה ימים ב-1995 על ידי Brendan Eich ב-Netscape. סיפור המקור הזה חשוב, כי חלק מהקצוות הגסים של השפה (שוויון רופף, הכנסה אוטומטית של נקודה-פסיק, typeof null === "object") נובעים מהחלטות שהתקבלו תחת לחץ זמן קיצוני ואז הוקפאו במקומן כדי לשמור על תאימות לאחור של האינטרנט.

השפה מתוקננת בשם ECMAScript, וגרסה חדשה יוצאת כל שנה (ES2015 הייתה הגדולה: let, const, arrow functions, מחלקות, מודולים). כשמישהו אומר "ES6" או "JavaScript מודרני", הכוונה בערך לסט היכולות של 2015 ואילך, שנתמך היום בכל מקום.

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

מה לקחת מכאן

  • JavaScript רצה בכל דפדפן, ודרך Node.js גם על שרתים.
  • משתמשים בה כמעט לכל דבר שהאינטרנט נוגע בו: ממשק משתמש, backend, כלי פיתוח, ואפילו אפליקציות דסקטופ ומובייל.
  • היא לא Java. TypeScript היא superset שמוסיפה טיפוסים סטטיים.
  • לשפה יש כמה מוזרויות היסטוריות; JavaScript מודרני (ES2015 ואילך) הוא מה שתכתבו בפועל.

הבא בתור: הרצת JavaScript

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

שאלות נפוצות

מה זה JavaScript במילים פשוטות?

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

למה משתמשים ב-JavaScript?

לכל דבר, מאינטראקציות קטנות בממשק (תפריטים נפתחים, אימות טפסים) ועד אפליקציות אינטרנט שלמות (Gmail, Figma, Notion), שרתי backend (Node.js, Deno), אפליקציות מובייל (React Native), אפליקציות דסקטופ (VS Code דרך Electron) וכלי build. אם משהו רץ בדפדפן או מדבר עם האינטרנט, כנראה ש-JavaScript מעורבת.

האם JavaScript זה אותו דבר כמו Java?

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

מה ההבדל בין JavaScript ל-TypeScript?

TypeScript היא JavaScript בתוספת מערכת טיפוסים. כותבים קוד עם הגדרות טיפוסים, קומפיילר בודק אותן, והפלט הוא JavaScript רגיל. כל קובץ JavaScript תקין הוא גם TypeScript תקין. לא צריך TypeScript כדי ללמוד JavaScript, אבל רוב בסיסי הקוד הגדולים משתמשים בה היום.

איור של שפות התכנות ב-Coddy

ללמוד תכנות עם Coddy

להתחיל