מישהו יודע איך זה קורה?

jaffa

משתמש פעיל
מנוי פרימיום
בוגר/תלמיד פרוג
D I G I T A L
קוד:
<script>
console.log((! + [] + [] + ![] ).length);
</script>

9//
 

מ.ש.

משתמש מקצוען
הנדסת תוכנה
D I G I T A L
מה שקורה, שהtoString של [] מחזיר מרכאות ריקות.
והוא ידפיס true (מבחינתו אם זה לא null או undefiend זה יחזיר true)
אם תעשו על זה ! (not) זה יחזיר false
תחלקו ככה:
[]+! יחזיר true
+
[] יחזיר string ריק.
+
[]! יחזיר false
ולכן זה יצא 9
(truefalse".length"=9)
 

פרידמן אברהם

משתמש מקצוען
מנוי פרימיום
בוגר/תלמיד פרוג
D I G I T A L
מה שקורה, שהtoString של [] מחזיר מרכאות ריקות.
והוא ידפיס true (מבחינתו אם זה לא null או undefiend זה יחזיר true)
אם תעשו על זה ! (not) זה יחזיר false
(truefalse".length"=9)
זה לא מדויק ואסביר לפי עניות דעתי

קודם כל סטרינג ריק הוא false מוזמנים לפתוח את הקונסולה ולבדוק...
[] + [] === "" (חשוב להבין!)
true + [] == "true" וכן כל דבר בתוספת מערך ריק שווה לאותו דבר בסטרינג (נסה את זה ([1,2,3]+[]))
ומעכשיו כמעט אותו דבר

[]+! יחזיר true
+
[] יחזיר "true"
+
[]! יחזיר false ולמה...

בעצם מה שקורה
true + "" + false
תדביק בקונסול
בהנאה

[] == false
[]! == false
זה לא סתירה
התעצל להסביר
https://stackoverflow.com/questions...seem-to-equal-true-and-false-at-the-same-time

דווקא ההסבר בלינק זה לא משהו אבל זה בדיוק השאלה
https://stackoverflow.com/questions/51010468/why-console-log-length-gives-9
 

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

הפרק היומי

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


תהילים פרק קכו

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

לוח מודעות

למעלה