Điều này là do Abstract Equality Comparison Algorithm đòi hỏi rằng nếu Type(x)
hoặc Type(y)
là một Boolean trong biểu thức x == y
thì giá trị Boolean nên bị ép buộc thành một số qua ToNumber
, chuyển đổi true
đến 1 và false
đến +0
.
này có nghĩa là bất cứ so sánh của true == something
hoặc something == true
kết quả trong 1 == something
hoặc something == 1
(thay thế true
và 1
với false
và +0
cho false
).
The Null type không so sánh bằng 1 hoặc +0 (trên thực tế, null chỉ có thể so sánh với undefined
trong AECA).
Có một cuộc thảo luận chi tiết về tất cả các loại bình đẳng khác nhau trong JavaScript trên MDN cũng đáng xem xét nếu bạn muốn biết thêm.
Tuy nhiên, nếu bạn ép buộc null
một số nó là coerced to +0
nên +null == false
thực sự trả true
.
Nguồn
2014-12-24 06:30:07
Cả hai đều bình đẳng sai vì rỗng không bằng đúng hay sai. Giống như '1' không bằng' "pizza" 'hoặc' {} '. Khi được sử dụng một mình giống như các câu lệnh, nó bị ép buộc thành boolean sai vì nó là giá trị falsey –
Null là một chữ cái và sai là boolean, có thể là cả hai loại không thể so sánh –
vì JavaScript –