יסודות JavaScript
לא להתבלבל: JavaScript ≠ Java (שפות שונות לחלוטין!)
איפה רץ? בדפדפן (Chrome, Firefox) ובשרת (Node.js)
למה ללמוד? חיונית לפיתוח web, אפליקציות מובייל (React Native), ואפילו שרתים!
טיפ: אפשר לפתוח את ה-Console בדפדפן (F12) ולהתנסות בקוד מיד!
הדפסה ל-Console
הדפסה בסיסית:
סוגי הדפסה שונים:
הערות
הערות בקוד:
הוספת JavaScript לדף HTML
בתוך ה-HTML:
קובץ חיצוני:
משתנים (Variables)
3 דרכים להגדיר:
•
let - המודרני והמומלץ (ניתן לשינוי)•
const - קבוע (לא ניתן לשינוי)•
var - הישן (לא מומלץ להשתמש)כלל אצבע: תמיד השתמשו ב-const, אלא אם צריך לשנות את הערך - אז let
הגדרת משתנים
let - משתנה שניתן לשינוי:
const - קבוע:
הגדרה מרובה:
כללי שמות משתנים
• מתחיל באות, $ או _
• יכול להכיל אותיות, מספרים, $ ו-_
• רגיש לאותיות גדולות/קטנות (name ≠ Name)
❌ לא חוקי:
• מתחיל במספר (1name)
• מכיל רווחים (my name)
• מילות שמורות (let, const, if)
דוגמאות:
טיפוסי נתונים (Data Types)
7 טיפוסים פרימיטיביים:
1.
Number - מספרים (5, 3.14, -10)2.
String - טקסט ("Hello")3.
Boolean - true/false4.
Undefined - לא הוגדר5.
Null - ריק במכוון6.
Symbol - ייחודי7.
BigInt - מספרים ענקיים+ Object - מבנה נתונים מורכב
Number - מספרים
מספרים שלמים ועשרוניים:
פעולות מתמטיות:
String - מחרוזות
יצירת מחרוזות:
Boolean - ערכי אמת
true ו-false:
Undefined ו-Null
הבדל בין undefined ל-null:
null - אנחנו מגדירים במפורש שהערך ריק
בדיקת טיפוס
typeof operator:
המרות טיפוסים
המרה למספר:
המרה למחרוזת:
המרה ל-Boolean:
אופרטורים (Operators)
חשוב! JavaScript יש == ו-===. תמיד השתמשו ב-=== (השוואה מדויקת)!
== vs ===:
•
== משווה ערכים (עם המרה אוטומטית)•
=== משווה ערכים וטיפוסים (מומלץ!)
אופרטורי השוואה
השוואות:
אופרטורים לוגיים
AND, OR, NOT:
אופרטורי השמה
קיצורי דרך:
אופרטורים מיוחדים
Ternary operator (תנאי בשורה אחת):
Nullish coalescing (??):
Optional chaining (?.):
מחרוזות (Strings)
3 דרכים ליצור: 'single', "double", `backtick`
Template Literals (backticks) - המודרני והנוח ביותר!
Immutable - לא ניתן לשנות מחרוזת, רק ליצור חדשה.
טיפ: מחרוזות ב-JS הן אובייקטים עם מתודות רבות!
יצירת מחרוזות
Template Literals - המומלץ:
מתודות מחרוזת
אורך וגישה:
שינוי רישיות:
חיפוש:
חיתוך והחלפה:
פיצול וחיבור:
הסרת רווחים:
מערכים (Arrays)
אינדקס - מיקום האיבר במערך (מתחיל מ-0!)
Dynamic - אפשר להוסיף ולהסיר איברים בקלות.
Mixed Types - מערך יכול להכיל טיפוסים שונים (מספרים, מחרוזות, אובייקטים).
טיפ: למערכים יש המון מתודות שימושיות - map, filter, reduce ועוד!
יצירת מערכים
דרכים ליצור מערך:
גישה ושינוי
גישה לאיברים:
הוספה והסרה
הוספה בסוף ובהתחלה:
הסרה מהסוף ומההתחלה:
splice - הוספה/הסרה במיקום ספציפי:
מתודות חיפוש
חיפוש איברים:
מתודות מערך חשובות
map - יצירת מערך חדש:
filter - סינון:
reduce - צמצום לערך אחד:
forEach - לולאה:
sort - מיון:
מתודות נוספות
שילוב וחיתוך:
אובייקטים (Objects)
למה זה שימושי? מאפשר לארגן מידע קשור יחד (שם, גיל, כתובת של אדם).
הכל אובייקט! ב-JS כמעט הכל הוא אובייקט - מערכים, פונקציות, תאריכים...
טיפ: אובייקטים הם mutable - אפשר לשנות אותם גם אם הוגדרו עם const!
יצירת אובייקטים
Object literal - הדרך הנפוצה:
גישה למאפיינים
שתי דרכים לגשת:
הוספה, שינוי ומחיקה
עדכון אובייקט:
מתודות אובייקט
פונקציות בתוך אובייקט:
Object methods
מתודות שימושיות:
Destructuring
חילוץ ערכים מאובייקט:
פונקציות (Functions)
למה זה חשוב? מונע כפילות קוד, הופך את הקוד לקריא ומאורגן.
3 דרכים להגדיר: function declaration, function expression, arrow function
Arrow Functions - הדרך המודרנית והקצרה ביותר!
טיפ: פונקציות ב-JS הן "first-class citizens" - אפשר להעביר אותן כפרמטרים!
הגדרת פונקציות
Function Declaration:
Function Expression:
Arrow Function - המודרני:
פרמטרים
פרמטרים עם ברירת מחדל:
Rest parameters (...):
Callback Functions
פונקציה כפרמטר:
Higher-Order Functions
פונקציה שמחזירה פונקציה:
בקרת זרימה (Control Flow)
if/else - "אם... אז... אחרת..."
switch - בחירה מתוך אפשרויות רבות
טיפ: השתמשו ב-=== ולא ב-== בתנאים!
if/else
תנאים בסיסיים:
תנאים מורכבים:
switch
בחירה מרובה:
Truthy ו-Falsy
ערכים שנחשבים false:
לולאות (Loops)
for - כשיודעים כמה פעמים
while - כשלא יודעים כמה פעמים
for...of - לולאה על מערכים (מומלץ!)
for...in - לולאה על מפתחות אובייקט
טיפ: זהירות מלולאות אינסופיות!
for loop
לולאה קלאסית:
for...of - המודרני
לולאה על מערכים:
for...in
לולאה על מפתחות:
while ו-do...while
while loop:
break ו-continue
שליטה בלולאה:
DOM Manipulation
למה זה חשוב? זה מה שהופך את JavaScript לאינטראקטיבי! שינוי תוכן, סגנון, הוספת אלמנטים.
טיפ: תמיד בדקו שהאלמנט קיים לפני שמשנים אותו!
מודרני: השתמשו ב-querySelector במקום getElementById
בחירת אלמנטים
דרכים לבחור אלמנטים:
שינוי תוכן
עדכון טקסט ו-HTML:
שינוי סגנון
CSS דרך JavaScript:
יצירה והוספת אלמנטים
יצירת אלמנטים חדשים:
Attributes
עבודה עם תכונות:
Events (אירועים)
Event Listener - "מאזין" שמחכה לאירוע ומגיב אליו.
למה זה חשוב? זה מה שהופך את האתר לאינטראקטיבי!
טיפ: תמיד השתמשו ב-addEventListener, לא ב-onclick!
Event Listeners
הוספת מאזין לאירוע:
אירועים נפוצים
סוגי אירועים:
Event Object
מידע על האירוע:
הסרת Event Listener
הסרת מאזין:
Async/Await ו-Promises
Promise - הבטחה שמשהו יקרה בעתיד (הצלחה או כישלון).
async/await - דרך נוחה לכתוב קוד אסינכרוני שנראה סינכרוני.
למה זה חשוב? רוב הפעולות באינטרנט הן אסינכרוניות!
טיפ: תמיד השתמשו ב-try/catch עם async/await!
Promises
יצירת Promise:
async/await - המודרני
פונקציה אסינכרונית:
Fetch API
בקשות HTTP:
Promise.all
ריצה מקבילה:
ES6+ Features
למה זה חשוב? הופך את הקוד לקצר, קריא ויעיל יותר.
תכונות עיקריות: let/const, arrow functions, template literals, destructuring, spread/rest
טיפ: כל הדפדפנים המודרניים תומכים ב-ES6!
Spread Operator (...)
פיזור מערכים ואובייקטים:
Destructuring
חילוץ ערכים:
Default Parameters
ערכי ברירת מחדל:
Optional Chaining (?.)
גישה בטוחה למאפיינים:
Nullish Coalescing (??)
ערך ברירת מחדל:
Modules (מודולים)
למה זה חשוב? מאפשר לארגן קוד גדול לקבצים קטנים ומנוהלים.
export/import - הדרך המודרנית לשתף קוד בין קבצים.
טיפ: צריך להוסיף type="module" ל-script tag!
Export ו-Import
ייצוא מקובץ:
ייבוא לקובץ:
שימוש ב-HTML:
JSON ו-APIs
למה זה חשוב? כמעט כל API באינטרנט משתמש ב-JSON!
דומה לאובייקט JS - אבל המפתחות בגרשיים כפולים.
טיפ: JSON.parse() ו-JSON.stringify() הם החברים הכי טובים שלכם!
JSON Methods
המרה בין JSON למחרוזת:
עבודה עם APIs
דוגמה מלאה:
Local Storage
שמירת נתונים בדפדפן:
CopyCode