הרבה פעמים רוצים להמיר אוביקט לערך בוליאני, כדי לדעת האם הוא קיים.
(דוגמא מצויה לכך היא, שאני למשל רוצה להעביר עוד פרמטר לפונקציה, אבל לאו דווקא את האוביקט עצמו.)
נביט על חתיכת הקוד הבאה:
אנחנו מאתחלים משתנה, ומוסיפים כמה סימני קריאה, ומקבלים true!
ההסבר לזה הוא, שאם מוסיפים סימן קריאה אחד לפני משתנה, הקומפיילר מזהה את זה כאופרטור לוגי שלילי, כלומר "אם לא". וכידוע בJS כאשר אנחנו שואלים את השאלה הזו על משתנה הוא שולל מחרוזת ריקה, null , undefined ו-0. ולכן:
יחזיר false מכיון ש someVar הוא אוביקט, אמנם ריק, אבל חי.
נכניס את הלוגיקה הזו למתשנה, ונראה מה קורה:
עכשיו מכיון ש oneMark עצמו הוא false, אם נשלול אותו, כלומר האם הוא "לא לא", אז בעצם הוא כן, ולכן אנחנו מקבלים true.
ולכן, אם נשים מספר זוגי של סימני קריאה על משתנה שאינו נשלל תמיד נקבל true ואם נשים מספר אי-זוגי נקבל false.
ולכן כדי להמיר אוביקט לבוליאני נשים שני סימני קריאה.
(עוד מאלה, בלינק בחתימה)
(דוגמא מצויה לכך היא, שאני למשל רוצה להעביר עוד פרמטר לפונקציה, אבל לאו דווקא את האוביקט עצמו.)
נביט על חתיכת הקוד הבאה:
קוד:
const someVar = {}
!!!!!!!!!!!!someVar
true
ההסבר לזה הוא, שאם מוסיפים סימן קריאה אחד לפני משתנה, הקומפיילר מזהה את זה כאופרטור לוגי שלילי, כלומר "אם לא". וכידוע בJS כאשר אנחנו שואלים את השאלה הזו על משתנה הוא שולל מחרוזת ריקה, null , undefined ו-0. ולכן:
קוד:
!someVar
false
נכניס את הלוגיקה הזו למתשנה, ונראה מה קורה:
קוד:
const oneMark = !someVar
!oneMark
true
ולכן, אם נשים מספר זוגי של סימני קריאה על משתנה שאינו נשלל תמיד נקבל true ואם נשים מספר אי-זוגי נקבל false.
ולכן כדי להמיר אוביקט לבוליאני נשים שני סימני קריאה.
(עוד מאלה, בלינק בחתימה)