So sánh một nhóm ký tự javascript năm 2024
Trong bài viết này, chúng ta sẽ tìm hiểu thêm về các loại so sánh khác nhau, cách JavaScript tạo ra chúng, bao gồm các đặc thù quan trọng. Show Nội dung chính 1. Boolean là kết quả trả về khi so sánhTất cả các toán tử so sánh trả về một giá trị boolean:
Ví dụ:
Một kết quả so sánh có thể được gán cho một biến, giống như bất kỳ giá trị nào:
2. So sánh chuỗiĐể xem liệu một chuỗi có lớn hơn chuỗi khác hay không, JavaScript sử dụng thứ tự được gọi là dictionary hay lexicographical. Nói cách khác, các chuỗi được so sánh từng chữ cái. Ví dụ:
Thuật toán để so sánh hai chuỗi rất đơn giản:
Trong các ví dụ ở trên, việc so sánh
4đạt được kết quả ở bước đầu tiên trong khi các chuỗi
5và
6được so sánh theo từng ký tự:
Nó không phải là một từ điển thực sự, nhưng nó theo thứ tự của Unicode Thuật toán so sánh được đưa ra ở trên gần tương đương với thuật toán được sử dụng trong từ điển hoặc danh bạ điện thoại, nhưng nó không hoàn toàn giống nhau. Ví dụ, trường hợp quan trọng. Một chữ in hoa
3không bằng chữ thường
4. Cái nào lớn hơn? Chữ thường
4. Tại sao? Bởi vì ký tự chữ thường có chỉ mục lớn hơn trong bảng mã hóa nội bộ mà JavaScript sử dụng (Unicode). Chúng ta sẽ quay lại chi tiết cụ thể và hậu quả của điều này trong Chương chuỗi. 3. So sánh các kiểu khác nhauKhi so sánh các giá trị của các loại khác nhau, JavaScript chuyển đổi các giá trị thành số. Ví dụ:
Đối với các giá trị boolean,
2trở thành
7và
3trở thành
9. Ví dụ:
Một hậu quả buồn cười Có thể là cùng một lúc:
Ví dụ:
Từ quan điểm của JavaScript, kết quả này là khá bình thường. Kiểm tra đẳng thức chuyển đổi các giá trị bằng cách sử dụng chuyển đổi số (do đó
2trở thành
9), trong khi
4chuyển đổi rõ ràng sử dụng một bộ quy tắc khác. Một kiểm tra bình đẳng
8có một vấn đề. Nó không thể phân biệt
9với
3:
Điều tương tự xảy ra với một chuỗi rỗng:
Điều này xảy ra bởi vì toán hạng của các kiểu khác nhau được chuyển đổi thành số bởi toán tử đẳng thức
8. Một chuỗi rỗng, giống như
3, trở thành số không. Phải làm gì nếu chúng tôi muốn phân biệt
9từ
3? Một toán tử đẳng thức nghiêm ngặt
2kiểm tra đẳng thức mà không cần chuyển đổi kiểu. Nói cách khác, nếu
3và
4thuộc các loại khác nhau, thì
5ngay lập tức trả về
3mà không cần chuyển đổi chúng. Hãy thử nó:
Ngoài ra còn có một toán tử khắt khe không bình đẳng,
7tương tự
8. Toán tử so sánh bằng nghiêm ngặt dài hơn một chút để viết, nhưng làm cho nó rõ ràng những gì đang xảy ra và để lại ít lỗi hơn. 5. So sánh với null và không xác địnhCó một hành vi không trực quan khi
9hoặc
0được so sánh với các giá trị khác. Đối với một kiểm tra so sánh bình đẳng nghiêm ngặt
2 Các giá trị này là khác nhau, bởi vì mỗi trong số chúng là một kiểu khác nhau.
Đối với một kiểm tra không nghiêm ngặt
8 Có một quy tắc đặc biệt. Hai người này là một cặp đôi ngọt ngào: họ ngang nhau (theo nghĩa
8).
0 Đối với toán học và so sánh khác
4
5được chuyển đổi thành số:
9trở thành
9, trong khi
0trở thành
9. Bây giờ hãy xem một số điều thú vị xảy ra khi chúng ta áp dụng các quy tắc này. Và, điều quan trọng hơn, làm thế nào để không rơi vào bẫy với chúng. 5.1 Kết quả kỳ lạ: null vs 0Hãy so sánh
9với số 0:
1 Về mặt toán học, điều đó thật lạ. Kết quả cuối cùng nói rằng
9lớn hơn hoặc bằng 0, do đó, trong một trong những so sánh ở trên thì phải
2, nhưng cả hai đều sai. Lý do là một kiểm tra bằng
8và so sánh
4hoạt động khác nhau. So sánh chuyển đổi
9thành một số, coi nó là
9. Đó là lý do tại sao dòng (3)
7là đúng và dòng (1)
8là sai. Mặt khác, việc kiểm tra bình đẳng
8cho
0và
9được định nghĩa như vậy mà, mà không cần bất kỳ chuyển đổi, họ tương đương với nhau và làm bất cứ điều gì không bằng. Đó là lý do tại sao (2)
2là sai. 5.2 Không thể so sánh với không xác địnhGiá trị
0không nên được so sánh với các giá trị khác:
2 Tại sao nó không thích số 0 nhiều như vậy? Luôn luôn sai! Chúng ta nhận được những kết quả này bởi vì:
5.3 Trốn tránh vấn đềTại sao chúng ta đi qua những ví dụ này? Chúng ta có nên nhớ những đặc thù này mọi lúc không? Vâng, không thực sự. Trên thực tế, những điều khó khăn này sẽ dần trở nên quen thuộc theo thời gian, nhưng có một cách vững chắc để trốn tránh các vấn đề với chúng: Chỉ cần đối xử với bất kỳ so sánh với
6ngoại trừ sự bình đẳng nghiêm ngặt
2. Đừng sử dụng so sánh
8với một biến có thể
5, trừ khi bạn thực sự chắc chắn về những gì bạn đang làm. Nếu một biến có thể có các giá trị này, hãy kiểm tra chúng một cách riêng biệt. |