הבנת סוגי נתונים ב-JavaScript

הקדמה

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

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

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

טיפוס דינמי

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

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

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

let t = 16;			// t הוא מספר
let t = "Teresa";	// t הוא מחרוזת
let t = true;		// t הוא בוליאני
let t;				// t אינו מוגדר

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

מספרים

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

let num1 = 93;
let num2 = 93.00;

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

ניתן להשתמש בתכתוב מדעי ב־JavaScript כדי להקציף מספרים גדולים מאוד או קטנים מאוד, כפי שניתן לראות בדוגמאות הבאות:

let num3 = 987e8;		// 98700000000
let num4 = 987e-8;		// 0.00000987

המספרים ב-JavaScript נחשבים מדויקים עד 15 ספרות. זאת אומרת שהמספרים יעוגנו לאחר שנגיע לספרה ה-16:

let num5 = 999999999999999;		// נשאר כ-999999999999999
let num6 = 9999999999999999;	// יעוגן ל-10000000000000000

בנוסף לייצוג של מספרים, סוג המספר ב-JavaScript כולל גם שלושה ערכים סימבוליים זמינים:

  • Infinity — ערך מספרי שמייצג מספר חיובי שמתקרב לאינסוף
  • -Infinity— ערך מספרי שמייצג מספר שלילי שמתקרב לאינסוף
  • NaN — ערך מספרי שמייצג לא-מספר, סומן לא מספר

יתווספו ערכים כמו Infinity או -Infinity אם יתבצע חישוב עם מספר שחורג מהערך המרבי האפשרי ב-JavaScript. גם כאשר מתבצעת חלוקה באפס, יתווספו ערכים אלה:

let num7 = 5 / 0;	// יחזיר Infinity
let num8 = -5 / 0;	// יחזיר -Infinity

מבחינה טכנית, Infinity יוצג כאשר מספר חורג מהערך 1.797693134862315E+308, שמייצג את המגבלה העליונה ב-JavaScript.

באופן דומה, -Infinity יוצג כאשר מספר חורג מהמגבלה התחתונה של -1.797693134862316E+308.

המספר Infinity יכול גם להשתמש בלולאות:

while (num9 != Infinity) { 
	// הקוד כאן יבוצע עד num9 = Infinity
}

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

let x = 20 / "Shark";	// x יהיה NaN

מאחר שהמספר 20 לא יכול להתחלק במחרוזת "Shark" משום שאין אפשרות להערכתה כמספר, הערך שמוחזר עבור המשתנה x הוא NaN.

אך אם מחרוזת יכולה להיות מוערכת כערך מספרי, הביטוי המתמטי יכול להתבצע ב-JavaScript:

let y = 20 / "5";	// y יהיה 4

בדוגמה לעיל, מאחר שהמחרוזת "5" יכולה להיות מוערכת כערך מספרי ב-JavaScript, היא מטופלת כך ותעבוד עם אופרטור המתמטי לחלוקה, /.

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

let a = NaN;
let b = 37;
let c = a + b; 	// c יהיה NaN

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

מחרוזות

A string is a sequence of one or more characters (letters, numbers, symbols). Strings are useful in that they represent textual data.

ב-JavaScript, מחרוזות קיימות בתוך גרשיים או גרשיים כפולים, לכן כדי ליצור מחרוזת, עליך לסגור רצף של תווים בגרשיים:

let singleQuotes = 'This is a string in single quotes.';
let doubleQuotes = "This is a string in double quotes.";

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

התוכנית "שלום, עולם!" מדגימה איך ניתן להשתמש במחרוזת בתכנות מחשב, מאחר והתווים שמרכיבים את הביטוי "שלום, עולם!" בתוך ה-alert() למטה הם מחרוזת.

hello.html
<!DOCTYPE HTML>
<html>
<head>
<script>
function helloFunction() {
    alert("Hello, World!");
}
</script>
</head>
<body>
<p><button onclick="helloFunction()">Click me</button></p>
</body>
</html>

כאשר אנו מפעילים את הקוד ולוחצים על לחצן לחץ עליי, נקבל חלון קופץ עם הפלט הבא:

Output
Hello, World!

כמו עם סוגי נתונים אחרים, אנו יכולים לאחסן מחרוזות במשתנים:

let hw = "Hello, World!";

ולהציג את המחרוזת בתוך ה-alert() על ידי קריאה למשתנה:

hello.html
...
<script>
let hw = "Hello, World!";
function helloFunction() {
    alert(hw);
}
</script>
...
Output
Hello, World!

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

בוליאנים

הסוג Boolean יכול להיות אחד משני הערכים, או true או false. בוליאנים משמשים לייצוג הערכים האמיתיים המשוייכים עם הסנה של המתמטיקה, שמשמשת לאלגוריתמים במדעי המחשב.

רבות מהפעולות במתמטיקה נותנות לנו תשובות שמבוטאות באמת או בשקר:

  • גדול מ
    • 500 > 100 true
    • 1 > 5 false
  • קטן מ
    • 200 < 400 true
    • 4 < 2 false
  • שווה
    • 5 = 5 true
    • 500 = 400 false

כמו עם סוגי נתונים אחרים, אנו יכולים לאחסן ערך בוליאני במשתנה:

let myBool = 5 > 8;	// שקר

מאחר ש-5 אינו גדול מ-8, המשתנה myBool מכיל את הערך של false.

כשתכתוב עוד תוכניות ב-JavaScript, תכיר יותר את דרך פעולתם של הבוליאנים ואיך פעולות ופונקציות שונות שמשיבות באמת או בשקר יכולות לשנות את מהלך התוכנית.

מערכים

מערך יכול להכיל ערכים מרובים בתוך משתנה יחיד. זה אומר שתוכל להכיל רשימת ערכים בתוך מערך ולעבור דרכם.

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

בדיוק כמו שמחרוזות מוגדרות כתווים בין גרשיים, מערכים מוגדרים על ידי ערכים בין סוגריים מרובעים [ ].

מערך של מחרוזות, לדוגמה, נראה כך:

let fish = ["shark", "cuttlefish", "clownfish", "eel"];

אם נקרא למשתנה fish, נקבל את הפלט הבא:

["shark", "cuttlefish", "clownfish", "eel"]

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

אובייקטים

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

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

let sammy = {firstName:"Sammy", lastName:"Shark", color:"blue", location:"ocean"};

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

let sammy = {
    firstName: "Sammy",
    lastName: "Shark",
    color: "blue",
    location: "Ocean"
};

משתנה האובייקט sammy בכל אחד מהדוגמאות לעיל מכיל 4 תכונות: firstName, lastName, color, ו- location. אלו מועברים ערכים מופרדים בפיצולים.

עבודה עם סוגי נתונים מרובים

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

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

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

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

let o = "Ocean" + 5 + 3;

אם תקרא למשתנה o, תקבל את הערך הבא בחזרה:

Output
Ocean53

אך, אם תתחיל עם מספרים, השניים יתווספו לפני שיחושבו כמחרוזת כאשר תופס מתוך התוכנית "אוקיין", לכן הערך שיחזור יהיה סכום המספרים השניים המחובר עם המחרוזת:

let p = 5 + 3 + "Ocean";
Output
8Ocean

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

מסקנה

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

כל אחד מהם יהפוך לחשוב כאשר תפתח פרוייקטי תכנות בשפת JavaScript.

Source:
https://www.digitalocean.com/community/tutorials/understanding-data-types-in-javascript