סוגי נתוני JavaScript: הסבר על סוג

typeofהיא מילת מפתח של JavaScript שתחזיר את סוג המשתנה כשאתה קורא לו. אתה יכול להשתמש בזה כדי לאמת פרמטרים של פונקציות או לבדוק אם מוגדרים משתנים. ישנם גם שימושים אחרים.

typeofהמפעיל הוא שימושי כי זה הוא דרך קלה כדי לבדוק את סוג המשתנה בקוד שלך. זה חשוב מכיוון ש- JavaScript הוא a היא שפה שהוקלדה באופן דינמי. פירוש הדבר כי אינך נדרש להקצות סוגים למשתנים בעת יצירת אותם. מכיוון שמשתנה אינו מוגבל בצורה זו, הסוג שלו יכול להשתנות במהלך זמן הריצה של התוכנית.

לדוגמה:

var x = 12345; // number x = 'string'; // string x = { key: 'value' }; // object

כפי שניתן לראות מהדוגמה לעיל, משתנה ב- JavaScript יכול לשנות סוגים במהלך ביצוע התוכנית. זה יכול להיות קשה לעקוב אחרי מתכנת, וכאן typeofמועיל המפעיל.

typeofמפעילת מחזירת מחרוזת המייצגת את הסוג הנוכחי של משתנה. אתה משתמש בו על ידי הקלדה typeof(variable)או typeof variable. אם נחזור לדוגמא הקודמת, אתה יכול להשתמש בה לבדיקת סוג המשתנה xבכל שלב:

var x = 12345; console.log(typeof x) // number x = 'string'; console.log(typeof x) // string x = { key: 'value' }; console.log(typeof x) // object

זה יכול להיות שימושי לבדיקת סוג המשתנה בפונקציה ולהמשך לפי הצורך.

הנה דוגמה לפונקציה שיכולה לקחת משתנה שהוא מחרוזת או מספר:

function doSomething(x) { if(typeof(x) === 'string') { alert('x is a string') } else if(typeof(x) === 'number') { alert('x is a number') } }

דרך נוספת typeofשהמפעיל יכול להיות שימושי היא על ידי הקפדה על הגדרת משתנה לפני שתנסה לגשת אליו בקוד שלך. זה יכול לעזור במניעת שגיאות בתוכנית שעלולות להתרחש אם אתה מנסה לגשת למשתנה שאינו מוגדר.

function(x){ if (typeof(x) === 'undefined') { console.log('variable x is not defined'); return; } // continue with function here... }

typeofלא תמיד תפוקת המפעיל תהיה מה שאתה מצפה כשאתה מחפש מספר.

מספרים יכולים להיכנס לערך NaN (Not A Number) מסיבות מרובות.

console.log(typeof NaN); //"number"

אולי ניסית להכפיל מספר עם אובייקט כי שכחת לגשת למספר שבתוך האובייקט.

var x = 1; var y = { number: 2 }; console.log(x * y); // NaN console.log(typeof (x * y)); // number

כאשר בודקים מספר, זה לא מספיק לבדוק את הפלט של typeofמספר, שכן NaNגם

עובר את המבחן הזה.

פונקציה זו בודקת מספרים וגם לא מאפשרת NaNלעבור את הערך.

function isNumber(data) { return (typeof data === 'number' && !isNan(data)); }

אפילו שחשבנו שזו שיטת אימות שימושית, עלינו להיזהר מכיוון ש- javascript מכיל חלקים מוזרים ואחד מהם הוא תוצאה של typeofהוראות מסוימות. לדוגמא, ב- javascript דברים רבים הם רק objectsכך שתמצאו.

var x = [1,2,3,4]; console.log(typeof x) // object console.log(typeof null) // object

עוד מידע:

תיעוד MDN לסוג