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 לסוג