Tôi vừa mới được nhìn vào _.isEqual
chức năng của Underscore.js và một phần của mã đi một cái gì đó như thế này:Đây có phải là dòng từ Underscore.js thực hiện kiểm tra bình đẳng thực sự cần thiết không?
if (a === b) return true;
if (typeof a !== typeof b) return false;
if (a == b) return true;
Tôi chỉ tự hỏi nếu có bất kỳ trường hợp báo cáo kết quả thứ ba có thể đạt được và đánh giá là true
?
Chỉnh sửa: Chỉ cần rõ ràng, đây không phải là mã của riêng tôi Tôi đang nói về, tôi đang đọc nguồn gốc của Underscore, cụ thể là this line và tôi đã tò mò về lý do tại sao họ làm điều đó.
Phải có một số trường hợp cạnh kỳ lạ, nơi điều này là có thể ... –
@nickf: Xem xét rằng '==' và '===' giống hệt nhau khi các kiểu giống nhau, tôi không thể thấy các thử nghiệm đầu tiên và thứ ba bao giờ sẽ cung cấp kết quả khác nhau như thế nào. Ngay cả trong trường hợp 'null' trong đó' typeof' khác với 'Type' nội bộ, nó không ép buộc bất kỳ giá trị nào ngoại trừ' undefined', có giá trị 'typeof' khác. Và nếu có * là * một số trường hợp cạnh ra khỏi đó, làm thế nào để bạn biết rằng bạn muốn * muốn * nó để ép buộc? Có vẻ lạ khi có một '==' và một '===' kiểm tra các giá trị giống nhau. Hoặc là bạn muốn ép buộc loại hoặc bạn không muốn. – user113716
... Tôi nên làm rõ rằng bằng * "bạn" * trong nhận xét ở trên, tôi không ngụ ý ngụ ý * nickf *, mà đúng hơn là * một người *. – user113716