Professional Documents
Culture Documents
6 - Js Basics
6 - Js Basics
שי תבור
shay.tavor@gmail.com
www.shaytavor.com
היסטוריה קצרה
• בשנים הראשונות של האינטרנט ,כל פעולה לוגית
בדף האינטרנט – החל מוולידציה של שדות קלט
ועד שליפת נתונים מה – DB-נעשתה בשרת.
• בעולם בו עיקר התקשורת נעשה דרך מודמים
טלפוניים עם רוחב פס צר מאוד ,הפניה לשרת
עבור כל פעולה יצרה זמני המתנה ארוכים
ומתסכלים אצל המשתמשים.
• בשנת 1995חברת Netscapeביקשה למצוא דרך
לקצר את זמני ההמתנה ע"י שפת צד לקוח
פשוטה שתבצע בדיקות קלט ותחסוך את
הקריאות לשרת.
shay.tavor@gmail.com
www.shaytavor.com
היסטוריה קצרה
• בשנת 1995יצאה הגרסה הראשונה של JSיחד
עם הדפדפן .Netscape Nevigator 2.0
• שם השפה – JavaScriptנבחר כדי לנצל את
הפופולריות הרבה ששפת ג'אווה זכתה לה באותה
תקופה למרות שהקשר בין השפות רופף.
• ב 1997-השפה הוגשה כמועמדת לתקן רשמי
ומאז תוקננה מספר פעמים והסינטקס שלה
התקבע והפך פורמלי ויציב יותר.
shay.tavor@gmail.com
www.shaytavor.com
מרכיבי השפה
• השפה מורכבת משלושה מודולים עיקריים:
– – Coreכולל את התחביר ,טיפוסי נתונים ,מילים
שמורות ,אופרטורים ,אובייקטים וכו'.
– ) – Document Object Model (DOMזהו APIשממפה
את דף האינטרנט בשלמותו לעץ כך שניתן "לטייל" עליו
ולבצע עליו מניפולציות.
– ) – Browser Object Model (BOMזהו APIשמאפשר
גישה לתכונות של חלון הדפדפן עצמו כך שהאפליקציה
יכולה לתקשר עם הדפדפן גם מחוץ לגבולות התצוגה
של האפליקציה.
shay.tavor@gmail.com
www.shaytavor.com
הרצת קוד JS
• סביבת ההרצה של JSהיא הדפדפן.
• קוד JSנטען בתוך דף HTMLע"י הדפדפן ,ושם
הוא רץ.
• ישנן שתי דרכים להוסיף קוד JSלדף :HTML
– תגית scriptבדףTag it .
– כתיבת קובץ חיצוני וקישורו לדף .مفضل نستعمل هاي الطريقة
shay.tavor@gmail.com
www.shaytavor.com
תגית script
• בתוך תגית scriptבדף HTMLניתן לשלב קוד :JS
><script
;)”!alert(“Hello
></script
• הקוד בתוך התגית מפורש מלמעלה למטה.
• שאר תוכן הדף (ה )HTML-לא יעובד כל עוד לא
הסתיים חלק ה.script-
shay.tavor@gmail.com
www.shaytavor.com
קישור לקובץ חיצוני
• בתוך תגית scriptבדף HTMLניתן להוסיף תכונה
שמציינת את מיקום קובץ הקוד:
>”<script type=“text/javascript” src=“MyScript.js
></script منضيف هاد تاج للكود Jsجواhtmlعشان ندخل اللغتين سوا
prints
shay.tavor@gmail.com
www.shaytavor.com
תחביר השפה
התחביר של JSדומה בהרבה נקודות לזה של •
ג'אווה ו :C
השפה היא .case sensitive •
הערות חד שורתיות מסומנות ע"י // •
הערות רב שורתיות מסומנות ע"י /* */ •
בסוף פקודה רושמים נקודה-פסיק; •
בלוקים נתחמים ע"י סוגריים מסולסלים}{ . •
שמות של משתנים ופונקציות יכולים להיות •
מורכבים מאותיות ,מספרים ,קו תחתון וסימן .$
shay.tavor@gmail.com
www.shaytavor.com
משתנים
.let • הגדרת משתנה נעשית ע"י המילה
let x;
:• משתנה יכול להכיל כל טיפוס של מידע
let x = “hi”; // string
x = 4; // number (string)
x = 5.9; // number (float)
x = true; // boolean
shay.tavor@gmail.com
www.shaytavor.com
קבועים
• הגדרת קבוע נעשית ע"י המילה .const
;const x = 2
• אי אפשר לשנות את ערכו של הקבוע:
שגיאה ;x += 5
shay.tavor@gmail.com
www.shaytavor.com
משתנים – סימון ישן
• ניתן להגדיר משתנה גם ע״י המילה :var
;var x
• בחלק מהמקומות עוד אפשר למצוא את צורת
הרישום הזאת למרות שהיא נחשבת לישנה ועדיף
להשתמש ב.let-
shay.tavor@gmail.com
www.shaytavor.com
typeof
• האופרטור typeofמאפשר לקבל את סוג הנתון
שנמצא במשתנה כרגע (חשוב בעיקר כי כאמור
משתנה יכול להכיל סוגים שונים של נתונים):
;”let x = “hello
;)console.log(typeof x // string
;x = 3.9
;))console.log(typeof(x // number
let n1 = parseInt(“11”); // n1 = 11
let n2 = parseInt(“12.3”); // n2 = 12
let n3 = parseInt(“14abc”); // n3 = 14
let n4 = parseInt(“abc”); // n4 = NaN Not a number
let n5 = parseInt(“1abc”); // n5 = 1
shay.tavor@gmail.com
www.shaytavor.com
המרה למחרוזות
• מחרוזת מייצג אוסף תווים .ניתן לייצג מחרוזת עם
גרשיים או גרש בודד.
;’let s1 = “abc”, s2 = ‘abc
• כל טיפוס נתונים מכיל את הפונקציה toString
שממירה אותו למחרוזת:
;let x = 123
”console.log(x.toString()); // “123
;x = true
”console.log(x.toString()); // “true
shay.tavor@gmail.com
www.shaytavor.com
השוואות
• האופרטור == משמש להשוואת ערכים.
• האופרטור מבצע המרות של האופרנדים במידה
והם לא מאותו טיפוס:
)”if(5 == “5 // true
)if(false == 0 // true
)”if(6 != “6 // false
shay.tavor@gmail.com
www.shaytavor.com
שוויון זהותי
• האופרטור === משמש להשוואת ערכים.
• האופרטור לא מבצע המרות של האופרנדים
במידה והם לא מאותו טיפוס:
)”if(5 === “5 // false
if(false === 0) // false
)”if(6 !== “6 // true
shay.tavor@gmail.com
www.shaytavor.com
פונקציות
:• הגדרת פונקציה
function functionName(parameters) {
function body
}
!שימו לב שלא מציינים ערך חוזר בחתימת הפונקציה
shay.tavor@gmail.com
www.shaytavor.com
function sayHello() {
console.log(“Hello”);
}
shay.tavor@gmail.com
www.shaytavor.com
function power(x, y) {
let res = 1;
for(let i = 1; i <= y; i++)
res *= x;
return res;
}
ניתן,כיוון שהפונקציה לא מציינת מה טיפוסי הארגומנטים
:להעביר לה כל סוג של פרמטר
power(2, 3); // 8
power(2.2, 3); // 10.648
power(2, 2.9); // 4 int النه٢ ل2.9 رجع
shay.tavor@gmail.com
www.shaytavor.com
arguments
אפשר לגשת ל arguments-מהפונקציה. •
למשל ,נכתוב פונקציה בשם .superPower •
אם הפונקציה תקבל פרמטר אחד ,היא תחזיר את •
הפרמטר בריבוע .بتعمله تربيع
אם הפונקציה תקבל שני פרמטרים ,היא תחזיר •
את הראשון בחזקת השני .منعمل األول اس الثاني
shay.tavor@gmail.com
www.shaytavor.com
function superPower() {
if(arguments.length == 1)
return arguments[0] * arguments[0];
else if(arguments.length == 2)
return power(arguments[0], arguments[1]);
}
superPower(3); // 9
superPower(3, 3); // 27
superPower(2, 3, 4); // undefined
shay.tavor@gmail.com
www.shaytavor.com
העמסה
• בגלל העובדה שלפונקציות ב JS-אין באמת
חתימה ,וניתן להעביר להן כל מספר של
פרמטרים ,אין משמעות להעמסה בשפה.
• אם מוגדרות שתי פונקציות עם אותו השם,
האחרונה שהוגדרה היא זאת שתופעל.
shay.tavor@gmail.com
www.shaytavor.com
By Value העברת פרמטרים
) עובריםobject-• כל סוגי הטיפוסים (חוץ מ
:by value לפונקציות
function add(num) {
num += 10;
}
let num = 5;
add(num);
console.log(num); // 5
shay.tavor@gmail.com
www.shaytavor.com
Execution Context
הקשר ההרצה ( Execution Contextאו )Context •
מגדיר עבור משתנה או פונקציה לאיזה מידע יש
להם גישה.
לכל הקשר יש מרחב זיכרון משלו שבתוכו מוגדרים •
משתנים.
כאשר כל הקוד בהקשר מסתיים ,ההקשר נמחק •
יחד עם כל המידע שבתוכו.
ההקשר הגלובלי הוא ההקשר החיצוני ביותר. •
בדפדפן ההקשר הזה נקרא .window •
shay.tavor@gmail.com
www.shaytavor.com
Execution Context
• כאשר קוד רץ בהקשר מסוים ,יש לו גישה לכל
המידע שנמצא בהקשר זה ,וכן בכל ההקשרים
שמעליו (המכילים אותו):
;let x = 1
{ )(function f
;let y = 2
שני המשתנים נגישים מתוך הפונקציה console.log(x + “, “ + y); //
}
;)console.log(x המשתנה נגיש בהקשר הגלובלי //
;)console.log (y // not defined
shay.tavor@gmail.com
www.shaytavor.com