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