קצרמר בנושא למה הקוד הזה ולידי someVar!!!!!

5127109

מהמשתמשים המובילים!
עיצוב גרפי
עימוד ספרים
הרבה פעמים רוצים להמיר אוביקט לערך בוליאני, כדי לדעת האם הוא קיים.
(דוגמא מצויה לכך היא, שאני למשל רוצה להעביר עוד פרמטר לפונקציה, אבל לאו דווקא את האוביקט עצמו.)

נביט על חתיכת הקוד הבאה:
קוד:
const someVar = {}
!!!!!!!!!!!!someVar
true
אנחנו מאתחלים משתנה, ומוסיפים כמה סימני קריאה, ומקבלים true!

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

(עוד מאלה, בלינק בחתימה)
 

אולי מעניין אותך גם...

הפרק היומי

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


תהילים פרק קיט ק'

קמה קָרָאתִי בְכָל לֵב עֲנֵנִי יְהוָה חֻקֶּיךָ אֶצֹּרָה:קמו קְרָאתִיךָ הוֹשִׁיעֵנִי וְאֶשְׁמְרָה עֵדֹתֶיךָ:קמז קִדַּמְתִּי בַנֶּשֶׁף וָאֲשַׁוֵּעָה (לדבריך) לִדְבָרְךָ יִחָלְתִּי:קמח קִדְּמוּ עֵינַי אַשְׁמֻרוֹת לָשִׂיחַ בְּאִמְרָתֶךָ:קמט קוֹלִי שִׁמְעָה כְחַסְדֶּךָ יְהוָה כְּמִשְׁפָּטֶךָ חַיֵּנִי:קנ קָרְבוּ רֹדְפֵי זִמָּה מִתּוֹרָתְךָ רָחָקוּ:קנא קָרוֹב אַתָּה יְהוָה וְכָל מִצְוֹתֶיךָ אֱמֶת:קנב קֶדֶם יָדַעְתִּי מֵעֵדֹתֶיךָ כִּי לְעוֹלָם יְסַדְתָּם:
נקרא  8  פעמים

לוח מודעות

למעלה