Tại sao (1 < NaN)
trả lại false
và không undefined
(bằng JavaScript)?Tại sao (1 <NaN) sai trong JavaScript?
Trong "11.8.5 Thuật toán so sánh tương quan trừu tượng", nó nói rằng nếu một trong hai giá trị là NaN (sau ToPrimitive và ToNumber không ảnh hưởng đến NaN theo quan điểm của tôi) thì kết quả là undefined
.
Trong FF và Chrome tôi nhận được:
console.log(1 < NaN);
// false
Tại sao vậy?
+1 để trích dẫn thông số trong câu hỏi. :-) – RobG
Bạn chắc chắn nên xem xét sai/NaN/0/undefined/""/null vấn đề của Javascript. Đó là không phù hợp khủng khiếp và là một trong những lỗ hổng nghiêm trọng nhất của ngôn ngữ này (nếu không khá tốt). –
@SF: Và nếu nó thực sự nghiêm ngặt, mọi người sẽ phàn nàn về * rằng * thay vào đó. :-) Các quy tắc không thực sự là tất cả những gì xấu, và trong thực tế ví dụ cụ thể này không có gì để làm với những điều sai/NaN/0/undefined/""/null. Đó là nhiều hơn rằng các đặc điểm kỹ thuật có phần này nói cách quan hệ làm việc, nhưng sau đó bạn phải tìm nơi khác để thấy rằng đã thực hiện công việc trong phần được trích dẫn, có nhiều hơn rằng các nhà điều hành thực tế không. –