על ההבדלים הקטנים (והקצת יותר גדולים) בין 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.

נהנת ממאמר זה? הירשם לרשימת התפוצה וקבל עדכונים על מאמרים חדשים!


תגובה אחת בנושא “על ההבדלים הקטנים (והקצת יותר גדולים) בין Null ל-Undefined ב-JavaScript”

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *