@karer: "na chłopski rozum" liczyłem, że pusta tablica da mi wartość true. Dopiero czytanie algorytmu w specyfikacji daje jakiś szerszy obraz tego i wydaje się to sensowne ( ͡°͜ʖ͡°)
Jakby kogoś interesowało dlaczego [] == true: "" = true (ToPrimitive, zmiana tablicy na wartość prymitywną) 0 == 1 (ToNumber, pusty string to 0 a wartość true to 1) 0 nie jest równe 1
Dopiero czytanie algorytmu w specyfikacji daje jakiś szerszy obraz tego i wydaje się to sensowne ( ͡°͜ʖ͡°)
@FairPlay: tak jak napisalem - castuje sie zawsze z prawej na lewa strone. Tak bylo od dziesiecioleci w jezykach dynamicznie typowanych. Duzo osob nie zwraca uwagi na to i pozniej sie dziwi.
#naukaprogramowania #javascript
źródło: comment_1590661542YZQaZhozYt6KkVeH6AROlK.jpg
Pobierz@abuson: zdecyduj sie i wybierz jedno albo "===" albo "?" bo nie rozumiem wogole co napisales.
myArr? "Yup" : "Nope"; jest tłumaczone na myArr === true ? "Yup" : "Nope"; ?
1 myArr? "Yup" : "Nope";
2 Boolean(myArr) === true ? "Yup" : "Nope";
Jakby kogoś interesowało dlaczego [] == true:
"" = true (ToPrimitive, zmiana tablicy na wartość prymitywną)
0 == 1 (ToNumber, pusty string to 0 a wartość true to 1)
0 nie jest równe 1
I właśnie o takie wytłumaczenie mi chodziło, skąd się wziął taki wynik tego warunku. Dzięki
@FairPlay: tak jak napisalem - castuje sie zawsze z prawej na lewa strone. Tak bylo od dziesiecioleci w jezykach dynamicznie typowanych. Duzo osob nie zwraca uwagi na to i pozniej sie dziwi.