Tôi nên hiểu những điều này như thế nào?Câu hỏi so sánh Javascript (null> = 0)
null>0
> false
null==0
> false
null>=0
> true
Tôi nên hiểu những điều này như thế nào?Câu hỏi so sánh Javascript (null> = 0)
null>0
> false
null==0
> false
null>=0
> true
Các toán tử quan hệ (>=
và <=
), thực hiện kiểu ép buộc (ToPrimitive
), với một kiểu gợi ý của Number
, tất cả các nhà khai thác quan hệ hiện có hành vi này .
Bạn có thể xem chi tiết bên trong của quy trình này trong The Abstract Relational Comparison Algorithm.
Mặt khác, Equals operator (==
), nếu một toán hạng là null
nó chỉ trả về true
nếu người kia là một trong hai null
hoặc undefined
, không có loại ép buộc số được thực hiện.
null == undefined; // true
null == null; // true
Kiểm tra chi tiết bên trong của quy trình này trong The Abstract Relational Comparison Algorithm.
bài được khuyến nghị:
OK. ">", "<" đánh giá null là 0. "==" thì không. Cảm ơn. – Eonil
Điều thú vị khác là a> = b không được đánh giá là ((a> b) || (a == b)) nhưng như! (a = 0 không giống như> hoặc ==. – bschandramohan
Khi null được sử dụng trong thử nghiệm số, nó đánh giá là 0, giải thích trường hợp của bạn> và> = trường hợp.
== tinh vi hơn. Không chính thức, null không giống như số không, vì vậy nó có ý nghĩa.
[This] (http://bclary.com/2004/11/07/#a-11.8) là một liên kết rất hữu ích để hiểu các bước được thực hiện trong việc sử dụng các toán tử này. Vẫn không giải thích được logic điên rồ, nhưng ... – Stephen
Các toán tử so sánh tương đối ngụ ý ngữ cảnh số, vì vậy trong các trường hợp đó (>
, >=
), null
được chuyển thành số (0). Tuy nhiên,
Trong trường hợp ==
, cả hai giá trị được coi là giá trị boolean và Javascript không nghĩ rằng null
phải bằng bất kỳ giá trị "sai khác" nào. Thật kỳ cục. Thuật toán bình đẳng cho ==
có một loạt các trường hợp đặc biệt và null
là một trong số đó. Chỉ có ==
cho chính nó và undefined
.
Thú vị! Có vẻ như Javascript cần một số nhà khai thác danh tính mới như >==
và <==
. Mặc dù tôi không chắc chắn rằng sẽ có ý nghĩa nhiều, cho các tác động số của >
và <
.
này cung cấp cho các kết quả dự kiến ...
(null > 0 || null === 0);
'rỗng <= 0' == true là tốt. – Oded
Trình thông dịch/trình duyệt nào? –
Wow ............ – Eonil