סוגי נתונים ב-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 בערוץ היוטיוב שלנו. נא לבדוק גם את ערוץ היוטיוב.