Với câu trả lời ban đầu chỉ ra thông số kỹ thuật đã bị xóa, tôi muốn cung cấp một liên kết và đoạn trích ngắn từ thông số kỹ thuật tại đây
Tài liệu đặc tả ECMA liệt kê lý do mà
The comparison x == y, where x and y are values, produces true or false.1 trả về false. Mặc dù nó không nói trực tiếp tại sao lại như vậy, nhưng phần quan trọng nhất để trả lời câu hỏi này nằm ở câu này
The comparison x == y, where x and y are values, produces true or false.
Nếu chúng ta tra cứu định nghĩa cho null, chúng ta sẽ tìm thấy một cái gì đó như thế này
NULL or nil means "no value" or "not applicable".
Trong Javascript,
The comparison x == y, where x and y are values, produces true or false.2 được xử lý theo cách tương tự. Nó không có bất kỳ giá trị. Tuy nhiên, false có một giá trị. Nó đang nói với chúng ta rằng có điều gì đó không phải như vậy. Trong khi đó,
The comparison x == y, where x and y are values, produces true or false.2 và
The comparison x == y, where x and y are values, produces true or false.1 không được cho là mang lại bất kỳ giá trị nào cho chúng tôi. Tương tự như vậy, không có gì nó có thể chuyển đổi thành để so sánh đẳng thức trừu tượng của nó, do đó kết quả sẽ luôn sai. Đó cũng là lý do tại sao
The comparison x == y, where x and y are values, produces true or false.2 trả về true [Cả hai đều không có bất kỳ giá trị nào]. Cần lưu ý rằng mặc dù vậy,
The comparison x == y, where x and y are values, produces true or false.3 trả về false do các kiểu khác nhau của chúng. [Sử dụng
The comparison x == y, where x and y are values, produces true or false.4 và
The comparison x == y, where x and y are values, produces true or false.5 trong bảng điều khiển để kiểm tra]
Tuy nhiên, điều tôi tò mò là việc so sánh
The comparison x == y, where x and y are values, produces true or false.6 với bất kỳ thứ gì sẽ luôn trả về false. Ngay cả khi so sánh nó với chính nó. [
The comparison x == y, where x and y are values, produces true or false.7 trả về sai]
Ngoài ra, một thông tin kỳ lạ khác. [
The comparison x == y, where x and y are values, produces true or false.8 trả về "số"]
bình đẳng nghiêm ngặt
Nếu có thể, bạn nên tránh sử dụng toán tử == để so sánh hai giá trị. Thay vào đó, hãy sử dụng === để thực sự xem liệu hai giá trị có bằng nhau không. == tạo ra ảo tưởng rằng hai giá trị thực sự bằng nhau khi chúng có thể không bằng cách sử dụng cưỡng chế. ví dụ
The comparison x == y, where x and y are values, produces true or false.9 là sự thật
NULL or nil means "no value" or "not applicable".0 là sai
NULL or nil means "no value" or "not applicable".1 là sự thật
NULL or nil means "no value" or "not applicable".2 là sai
NULL or nil means "no value" or "not applicable".3 là sự thật
NULL or nil means "no value" or "not applicable".4 là sai
Giải pháp liên quan
Javascript – Cách chuyển đổi chuỗi thành boolean trong JavaScript
Làm.
NULL or nil means "no value" or "not applicable".6
sử dụng toán tử nhận dạng [
NULL or nil means "no value" or "not applicable".5], không thực hiện bất kỳ chuyển đổi loại ẩn nào khi các biến được so sánh có các loại khác nhau
Đừng
Có lẽ bạn nên thận trọng khi sử dụng hai phương pháp này cho các nhu cầu cụ thể của mình
NULL or nil means "no value" or "not applicable".8
Bất kỳ chuỗi nào không phải là chuỗi rỗng sẽ đánh giá thành
NULL or nil means "no value" or "not applicable".6 bằng cách sử dụng chúng. Mặc dù chúng là những phương pháp rõ ràng nhất mà tôi có thể nghĩ đến liên quan đến chuyển đổi boolean, nhưng tôi nghĩ chúng không phải là thứ bạn đang tìm kiếm
Javascript – Nên sử dụng toán tử bằng nào [== so với ===] trong so sánh JavaScript
Toán tử đẳng thức nghiêm ngặt [
NULL or nil means "no value" or "not applicable".5] hoạt động giống hệt với toán tử đẳng thức trừu tượng [
NULL or nil means "no value" or "not applicable".8] ngoại trừ không có chuyển đổi loại nào được thực hiện và các loại phải giống nhau để được coi là bằng nhau
Thẩm quyền giải quyết. Hướng dẫn Javascript. Toán tử so sánh
Toán tử
NULL or nil means "no value" or "not applicable".8 sẽ so sánh sự bằng nhau sau khi thực hiện bất kỳ chuyển đổi loại cần thiết nào. Toán tử
NULL or nil means "no value" or "not applicable".5 sẽ không thực hiện chuyển đổi, vì vậy nếu hai giá trị không cùng loại thì
NULL or nil means "no value" or "not applicable".5 sẽ chỉ trả về
NULL or nil means "no value" or "not applicable".62. Cả hai đều nhanh như nhau
Để trích dẫn JavaScript xuất sắc của Douglas Crockford. Các bộ phận tốt,
JavaScript có hai bộ toán tử đẳng thức.
NULL or nil means "no value" or "not applicable".5 vàNULL or nil means "no value" or "not applicable".64, và cặp song sinh độc ác của họNULL or nil means "no value" or "not applicable".8 vàNULL or nil means "no value" or "not applicable".66. Những cái tốt hoạt động theo cách bạn mong đợi. Nếu hai toán hạng cùng loại và có cùng giá trị, thìNULL or nil means "no value" or "not applicable".5 tạo raNULL or nil means "no value" or "not applicable".6 vàNULL or nil means "no value" or "not applicable".64 tạo raNULL or nil means "no value" or "not applicable".62. Cặp song sinh độc ác làm điều đúng khi toán hạng cùng loại, nhưng nếu chúng thuộc loại khác nhau, chúng sẽ cố gắng ép buộc các giá trị. các quy tắc mà họ làm điều đó rất phức tạp và không thể nhớ được. Đây là một số trường hợp thú vịThe comparison x == y, where x and y are values, produces true or false.4
Thiếu tính chuyển tiếp là đáng báo động. Lời khuyên của tôi là đừng bao giờ sử dụng cặp song sinh độc ác. Thay vào đó, hãy luôn sử dụng
NULL or nil means "no value" or "not applicable".5 vàNULL or nil means "no value" or "not applicable".64. Tất cả các so sánh vừa hiển thị tạo raNULL or nil means "no value" or "not applicable".62 với toán tửNULL or nil means "no value" or "not applicable".5
Cập nhật
Một điểm hay đã được @Casebash đưa ra trong các nhận xét và trong câu trả lời của @Phillipe Laybaert liên quan đến các đối tượng. Đối với các đối tượng,
NULL or nil means "no value" or "not applicable".8 và
NULL or nil means "no value" or "not applicable".5 hành động nhất quán với nhau [trừ trường hợp đặc biệt]
The comparison x == y, where x and y are values, produces true or false.1
Trường hợp đặc biệt là khi bạn so sánh một nguyên thủy với một đối tượng đánh giá cùng một nguyên thủy, do phương pháp
NULL or nil means "no value" or "not applicable".87 hoặc
NULL or nil means "no value" or "not applicable".88 của nó. Ví dụ: hãy xem xét việc so sánh một chuỗi nguyên thủy với một đối tượng chuỗi được tạo bằng cách sử dụng hàm tạo
NULL or nil means "no value" or "not applicable".89
The comparison x == y, where x and y are values, produces true or false.5
Ở đây, toán tử
NULL or nil means "no value" or "not applicable".8 đang kiểm tra giá trị của hai đối tượng và trả về
NULL or nil means "no value" or "not applicable".6, nhưng
NULL or nil means "no value" or "not applicable".5 thấy rằng chúng không cùng loại và trả về
NULL or nil means "no value" or "not applicable".62. Cái nào đúng? . Lời khuyên của tôi là bỏ qua câu hỏi hoàn toàn và không sử dụng hàm tạo
NULL or nil means "no value" or "not applicable".89 để tạo đối tượng chuỗi từ chuỗi ký tự