MDC อธิบายตัว==
ดำเนินการดังนี้ :
หากตัวถูกดำเนินการทั้งสองไม่ใช่ประเภทเดียวกัน JavaScript จะแปลงตัวถูกดำเนินการจากนั้นใช้การเปรียบเทียบที่เข้มงวด ถ้าตัวถูกดำเนินการเป็นตัวเลขหรือบูลีนตัวถูกดำเนินการจะถูกแปลงเป็นตัวเลขถ้าเป็นไปได้ มิฉะนั้นถ้าตัวถูกดำเนินการเป็นสตริงตัวถูกดำเนินการอื่นจะถูกแปลงเป็นสตริงถ้าเป็นไปได้
ด้วยเหตุนี้ฉันจะประเมิน"true" == true
ดังนี้:
- เป็นประเภทเดียวกันหรือไม่? ไม่
- ตัวถูกดำเนินการเป็นตัวเลขหรือบูลีน? ใช่
- เราสามารถแปลงทั้งสองเป็นตัวเลขได้หรือไม่? ไม่ (
isNaN(Number("true")) // true
) - ตัวถูกดำเนินการเป็นสตริงหรือไม่ ใช่
- เราสามารถแปลงตัวถูกดำเนินการอื่นเป็นสตริงได้หรือไม่? ใช่ (
String(true) === "true" // true
)
ฉันลงเอยด้วยสตริง"true"
และ"true"
ซึ่งควรประเมินtrue
แต่ JavaScript แสดงเท็จ
ฉันพลาดอะไรไป?