MDC mô tả ==
nhà điều hành như sau :
Nếu hai toán hạng không cùng loại, JavaScript sẽ chuyển đổi các toán hạng sau đó áp dụng so sánh chặt chẽ. Nếu một trong hai toán hạng là một số hoặc một boolean, các toán hạng được chuyển đổi thành số nếu có thể; khác nếu một trong hai toán hạng là một chuỗi, toán hạng kia được chuyển đổi thành một chuỗi nếu có thể.
Với suy nghĩ này, tôi sẽ đánh giá "true" == true
như sau:
- Chúng có cùng loại không? Không
- Toán hạng là một số hay boolean? Đúng
- Chúng ta có thể chuyển đổi cả hai thành một số không? Không (
isNaN(Number("true")) // true
) - Toán hạng có phải là một chuỗi không? Đúng
- Chúng ta có thể chuyển đổi toán hạng khác thành một chuỗi không? Có (
String(true) === "true" // true
)
Tôi đã kết thúc với các chuỗi "true"
và "true"
sẽ đánh giá thành true
, nhưng JavaScript hiển thị sai.
Tôi đã bỏ lỡ điều gì?