Próbuję zrozumieć wyrażenie {} == true
po sekcji 7.2.12
dokumentu Ecma-262
.Jak rozumieć wyrażenie "{} == true"?
- Jeśli typ (y) jest logiczną, zwraca wynik porównania
x == ToNumber(y)
Wynikiem ToNumber(true)
jest 1
, następnie
{} == 1
- Jeśli Typ (x) to Obiekt i typ (y) to Ciąg, Liczba lub Symbol, a następnie zwraca wynik porównania
ToPrimitive(x) == y
.
Jestem teraz zdezorientowany na ToPrimitive({})
.
Jeśli wskazówka jest "string", to
a. Niech methodNames będzie "" toString "," valueOf "».
Else
a. Niech methodNames będzie "" valueOf "," toString "».
Gdyby ToPrimitive({})
być interpretowane jako {}.toString()
lub {}.valueOf()
?
Załóżmy, że wywoływana jest nazwa toString()
.
Jeśli Type (x) jest String i typ (y) jest liczba, zwróci wynik porównania
ToNumber(x) == y
Więc {} == true
może być ToNumber(ToPrimitive({})) == ToNumber(true)
?
Lista 'methodNames' jest listą priorytetów – Hacketo
" * może ktoś podać więcej szczegółów * "brzmi zbyt szeroko dla SO. Co chcesz wiedzieć? – Bergi
@Bergi Dostaję trochę informacji z odpowiedzi "Dmitri Pavlutin". Masz rację, zaktualizuję moje pytanie. – zangw