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

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

מאמר זה מסביר את סוגי הנתונים ב-JavaScript.

YouTube Video

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

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

סוגי פרימיטיבים

סוגים פרימיטיביים הם סוגי נתונים פשוטים המייצגים ערך יחיד. ל-JavaScript יש את 7 הסוגים הפרימיטיביים הבאים.

number

1let num = 42;
2let pi = 3.14;
3
4console.log("Value of num:", num);
5console.log("Value of pi:", pi);
  • number הוא סוג נתון המשמש לטיפול בערכים מספריים, כולל מספרים שלמים או מספרים עם נקודה עשרונית. התמודדות עם ערכים החורגים מגבולות מסוימים תגרור את הערכים Infinity או NaN (לא מספר).
1// Decimal calculations
2console.log(0.1 + 0.2 === 0.3); // false
3console.log(0.1 + 0.2); // 0.30000000000000004
4
5// Calculations with large numbers
6console.log(9007199254740991 + 1); // correct value
7console.log(9007199254740991 + 2); // incorrect value
  • ב-JavaScript, מספרים מיוצגים כמספרים בנקודה צפה. כתוצאה מכך, עשרוניים מסוימים (במיוחד כאלה שלא ניתן לייצגם בדיוק בבינארי) עשויים לא להתבטא בצורה מדויקת.
  • כאשר נדרשות חישובים מדויקים, כמו במקרה של ערכים כספיים, יש להימנע מטעויות עיגול כאלה. לדוגמה, ניתן להשתמש ב-BigInt או להתאים את מספר הספרות העשרוניות עם toFixed().

string

1let greeting = "Hello, world!";
2let char = 'A';
3const message = `"${greeting}" in JavaScript`;
4
5console.log("Value of greeting:", greeting);
6console.log("Value of char:", char);
7console.log("Value of message:", message);
  • string הוא סוג נתון המשמש לטיפול בטקסט, ומייצג רצף תווים. הוא נשמר על ידי עטיפת הטקסט במרכאות יחידות (') או מרכאות כפולות ("). מ-ES6 ואילך, ניתן להשתמש ב-backticks () לתבניות מחרוזות המספקות דרך קלה להטמעת משתנים. כדי להטמיע משתנה, יש להשתמש בתחביר ${}.

boolean

1let isAvailable = true;
2let hasError = false;
3
4console.log("Value of isAvailable:", isAvailable);
5console.log("Value of hasError:", hasError);
  • boolean מייצג ערך לוגי ויכול לקבל רק שני ערכים: true או false. הוא משמש כתוצאה של ביטויי תנאי או כסמן.

null

1let result = null;
2
3console.log("Value of result:", result);
  • null הוא סוג נתון המצביע באופן מפורש על 'אין ערך'. null נקבע על ידי מפתחים כסמל לריקנות מכוונת.

undefined

1let score;
2let subject = undefined;
3
4console.log("Value of score:", score);     // undefined
5console.log("Value of subject:", subject);
  • undefined הוא סוג נתון שמשמעותו 'לא מוגדר'. undefined מוגדר אוטומטית כאשר משתנה הוגדר אך לא קיבל ערך.

bigint

1let bigIntValue = 9007199254740991n;
2let anotherBigInt = 123456789012345678901234567890n;
3
4console.log("Value of bigIntValue:", bigIntValue);
5console.log("Value of anotherBigInt:", anotherBigInt);
  • bigint הוא סוג נתונים לטיפול במספרים שלמים גדולים. bigint מאפשר ייצוג מדויק של מספרים שלמים גדולים שלא ניתן לייצגם באמצעות סוג הנתונים number. ליטרלים של bigint מיוצגים על ידי הוספת n בסוף המספר.
  • bigint הוא סוג נתונים לטיפול במספרים שלמים בכל גודל שהוא, ללא מגבלות טווח. עם זאת, לא ניתן לבצע פעולות ישירות בין bigint ל-number, ולכן נדרשת זהירות.

Symbol

1let sym1 = Symbol('id');
2let sym2 = Symbol('id');
3
4console.log("sym1 === sym2:", sym1 === sym2); // false
  • Symbol הוא סוג נתונים המשמש ליצירת מזהים ייחודיים. הוא נוצר בעזרת Symbol() ויכול לשמש כמאפיין של אובייקט. בניגוד לסוגי נתונים פרימיטיביים אחרים, ל-Symbol יש ערכים ייחודיים, כך שאפילו עם אותו תוכן הוא נחשב ל-Symbol שונה.

סוגי אובייקטים

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

Object

1let person = {
2    name: "John",
3    age: 30,
4    isEmployee: true
5};
6console.log(person.name); // John
  • Object הוא אוסף של מאפיינים (זוגות מפתח-ערך) היכולים לאחסן סוגי נתונים שונים. אובייקטים מיוצגים על ידי סוגריים מסולסלים {}, וכל מאפיין מחובר עם : בין המפתח לערך.

Array

1let numbers = [10, 20, 30];
2console.log(numbers[0]); // 10
3console.log(numbers[1]); // 20
4console.log(numbers[2]); // 30
5console.log(numbers[3]); // undefined
  • Array הוא רשימה שמחזיקה ערכים רבים בסדר מסוים. מערכים מיוצגים על ידי סוגריים מרובעים [], והערכים מופרדים באמצעות פסיקים ,. לכל אלמנט ניתן לגשת באמצעות אינדקס שמתחיל מ-0.

Function

1function greet(name) {
2    return "Hello, " + name;
3}
4console.log(greet("Alice")); // Hello, Alice
  • פונקציות הן סוג של אובייקט ובלוקים ניתנים לשימוש חוזר של קוד. ניתן להגדיר פונקציות באמצעות מילת המפתח function.

סוגי אובייקטים אחרים

  • ב-JavaScript קיימים גם סוגי אובייקטים מובנים כמו Date, RegExp, Map, ו-Set. אלה מטפלים בנתונים בהתאם למקרים שימושיים מסוימים.

המרת סוגים

המרות סוגים מרומזות ו-מפורשות מבוצעות לעיתים קרובות ב-JavaScript.

המרת סוגים מרומזת

  • JavaScript עשויה להמיר סוגים באופן אוטומטי כאשר היא מבצעת פעולות בין סוגים שונים.
1let result = 5 + "5"; // "55" (the number is converted to a string)
2
3console.log(result);
  • בדוגמה זו, המספר 5 מומר באופן משתמע למחרוזת, מה שמוביל למחרוזת "55".

המרת סוגים מפורשת

  • מפתחים יכולים גם לבצע המרות סוגים בצורה מפורשת.
1let num = "123";
2let convertedNum = Number(num); // Converts "123" to the number 123
3
4console.log(typeof num);
5console.log(typeof convertedNum);
  • בדוגמה זו, הפונקציה Number() משמשת להמרה מפורשת של המחרוזת "123" למספר 123.

בדיקת סוגים

ב-JavaScript, ניתן להשתמש באופרטור typeof כדי לבדוק את סוג הנתונים של משתנה.

 1// Output: The type of 42 is: number
 2console.log('The type of 42             is:', typeof 42);
 3
 4// Output: The type of 42 is: bigint
 5console.log('The type of 42n            is:', typeof 42n);
 6
 7// Output: The type of "hello" is: string
 8console.log('The type of "hello"        is:', typeof "hello");
 9
10// Output: The type of true is: boolean
11console.log('The type of true           is:', typeof true);
12
13// Output: The type of undefined is: undefined
14console.log('The type of undefined      is:', typeof undefined);
15
16// Output: The type of null is: object
17console.log('The type of null           is:', typeof null);
18
19// Output: The type of Symbol() is: symbol
20console.log('The type of Symbol()       is:', typeof Symbol());
21
22// Output: The type of {} is: object
23console.log('The type of {}             is:', typeof {});
24
25// Output: The type of function () {} is: function
26console.log('The type of function () {} is:', typeof function () {});

סיכום

  • סוגי נתונים פרימיטיביים כוללים number, string, boolean, null, undefined, ו-symbol.
  • סוגי אובייקטים כוללים Object, Array, Function, ועוד.
  • מכיוון ששניהם, המרה אוטומטית והמרה מפורשת של סוגי נתונים מתבצעים, חשוב להבין את השימוש הנכון בסוגי נתונים.

תוכלו לעקוב אחר המאמר שלמעלה באמצעות Visual Studio Code בערוץ היוטיוב שלנו. נא לבדוק גם את ערוץ היוטיוב.

YouTube Video