על ההבדלים הקטנים (והקצת יותר גדולים) בין Null ל-Undefined ב-JavaScript
לפעמים ניתן להתבלבל ולחשוב ש-null ו-undefined זה אותו הדבר, אך זוהי טעות.
בפוסט זה אציג לכם את ההבדלים ביניהם.
מהו null?
null הוא ערך ריק או ערך לא קיים.
null הוא ערך שהושם במתכוון, כלומר, אם משתנה מחזיר null זה מכיוון ש-null הושם לתוכו, כך לדוגמה:
let num = null;
מהו undefined?
נקבל undefined כאשר משתנה הוצהר אך לא הוגדר.
JavaScript תשים למשתנה את הערך Undefined באופן אוטומטי.
למה הכוונה? לזה:
let num;
console.log(num); // undefined
כלומר המשתנה הוגדר (במקרה זה באמצעות let) אך שום ערך לא הושם לו.
דוגמה נפוצה נוספת היא כאשר מנסים לגשת אל property של אובייקט אשר לא קיים, כך לדוגמה:
let person = {name: 'David'};
console.log(person.age); //undefined
אגב, גם undefined הוא ערך שניתן להגדיר:
let num = undefined;
console.log(num); // undefined
ערכי שקר (Falsy Values)
ב-JavaScript ישנם מספרים סוגים של ערכים שהם ערכי שקר: false, null, undefined, 0, "", NaN אבל שימו לב, null ו-undefined לא תמיד שווים.
Strictly Equal vs Loosely Equals
כאשר נערוך השוואה מסוג loosely equals, אכן null ו-undefined יחזירו את אותו ערך, כלומר:
null == undefined // true
אבל בהשוואה מסוג strictly equal הסיפור הוא אחר:
null === undefined // false
מדוע? מכיוון והערך שלהם זהה (false) אך הסוג שלהם שונה.
בדיקת typeof
אם נבצע בדיקה של undefined באמצעות typeof נקבל תוצאה צפויה:
console.log(typeof undefined); // undefined
אם נעשה בדיקה דומה לערך שהוא null, האם נקבל null? לא.
console.log(typeof null); // object
נקבל object.
למה? בקצרה – מדובר בסוג של "באג" בשפה אשר מחזירה תוצאה כאילו null הוא object, מה שלא נכון כמובן.
אם תרצו לקרוא על העניין בהרחבה תוכלו לעשות זאת כאן, כאן ו-כאן.
פעולות מתמטיות
אחד ההבדלים הגדולים בין null ל-undefined הוא בעת ביצוע פעולות מתמטיות.
אם נוסיף null למספר, התוצאה הסופית לא תיפגע כי null נחשב כ-0, דוגמה:
let sum = 12+null;
console.log(sum); // 12
לעומת זאת, אם נעשה פעולה מתמטית עם undefined נקבל NaN, כלומר, Not a Number:
let sum = 12+undefined;
console.log(sum); // NaN
כלומר, למרות שבשני המקרים מדובר בערך falsy, יש הבדל מהותי אם הוא null או undefined.
נהנת ממאמר זה? הירשם לרשימת התפוצה וקבל עדכונים על מאמרים חדשים!
רק רגע! :)
כשאני לא כותב פוסטים ב-CodeBrain אני מספק שרותי פיתוח, ייעוץ והדרכה.
אם נראה לך שאני האיש המתאים עבורך, כדאי שנדבר :)
Bookmarked!, I enjoy your web site!
תודה, עשה לי סדר בראש.
מעולה!!
אחלה פוסטים!!
עזר לי מאד
קצר וקולע.