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" == true
sebagai 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?