MDC menjelaskan ==operator sebagai berikut :
Jika kedua operan tidak berjenis sama, JavaScript mengonversi operan tersebut lalu menerapkan perbandingan yang ketat. Jika salah satu operan adalah bilangan atau boolean, operan akan diubah menjadi bilangan jika memungkinkan; else jika salah satu operan adalah string, operan lain akan diubah menjadi string jika memungkinkan.
Dengan pemikiran ini, saya akan mengevaluasi "true" == truesebagai berikut:
- Apakah mereka dari tipe yang sama? Tidak
- Apakah operan berupa bilangan atau boolean? Iya
- Bisakah kita mengonversi keduanya menjadi angka? Tidak (
isNaN(Number("true")) // true) - Apakah salah satu operan adalah string? Iya
- Bisakah kita mengonversi operan lain menjadi string? Ya (
String(true) === "true" // true)
Saya berakhir dengan string "true"dan "true", yang seharusnya mengevaluasi true, tetapi JavaScript menunjukkan salah.
Apa yang saya lewatkan?