ב-JavaScript יש כמה דרכים לציין שאין ערך. הדף הזה
מתארת את שתי הדרכים הנפוצות ביותר: סוג הנתונים null ו-undefined.
null
מילת המפתח null מייצגת היעדר ערך שהוגדר בכוונה. null
הוא ראשוני, למרות שהאופרטור typeof מחזיר ש-null הוא אובייקט.
זו שגיאה שבוצעה
מהגרסה הראשונה של JavaScript והוא נשאר מכוון
ללא התייחסות, כדי למנוע פגיעה בהתנהגות צפויה ברחבי האינטרנט.
typeof null
> object
אפשר להגדיר משתנה בתור null
מתוך ציפייה שהוא ישקף ערך שהוקצה לו בשלב כלשהו
בסקריפט או בערך שחסר באופן מפורש. אפשר גם להקצות את null
להפניה קיימת כדי להסיר ערך קודם.
undefined
undefined הוא ערך ראשוני שמוקצה למשתנים
שהוצהרו זה עכשיו, או לערך שמתקבל מפעולה
לא מחזירה ערך משמעותי. לדוגמה, מצב כזה יכול לקרות כשאתם מצהירים
פונקציה במסוף המפתחים של דפדפן:
function myFunction() {}
> undefined
פונקציה מחזירה את הערך undefined באופן מפורש כאשר ההצהרה return שלה
לא מחזירה ערך.
(function() {
return;
}());
> undefined
השוואה בין null לבין undefined
יש חפיפה מסוימת בין undefined לבין null, אבל
למטרות שונות. במובן המחמיר ביותר, null מייצג ערך
מוגדר בכוונה כ'ריק', ו-undefined מייצג היעדר ערך מוקצה.
null ו-undefined שוות במידה חלשה, אבל לא שווים לחלוטין.
אופרטור השוויון החופשי מאלף אופרנדים מסוגים שונים לערך בוליאני
ולכן null ו-undefined גם false. אופרטור השוויון המחמיר
מחשיב אופרנדים של סוגי נתונים שונים כלא שוויוניים.
null == undefined
> true
null === undefined
> false
בשונה ממילת המפתח השמורה null, undefined הוא מאפיין של
אובייקט גלובלי. זה היה עיצוב
שהתקבלה בשלבי הפיתוח של JavaScript, והיא אפשרה לדפדפנים מדור קודם
להחליף את undefined לגמרי. בדפדפנים מודרניים, עדיין אפשר להשתמש
undefined כמזהה בהיקפים לא גלובליים, שמחליף את הערך שלו בתוך
היקף ההצהרה. לעולם לא להשתמש ב-undefined כמזהה. הוא
עלול לגרום להתנהגות לא צפויה, ולבלבל אנשים שיתחזקו בעתיד
ב-codebase,
בדיקת ההבנה
מה typeof null מחזיר?
objectundefinedprimitivestring