sách gpt4 ăn đã đi

Sự khác biệt giữa (NaN != NaN) và (NaN !== NaN) là gì?

In lại Tác giả: IT Lão Cao Thời gian cập nhật: 28-10-2023 13:18:38 26 4
mua khóa gpt4 giày nike

Trước hết tôi muốn nói rằng tôi biếtisNaN()Số.isNaN()Công việc. Tôi đang đọc tác phẩm của David Flanagan Hướng dẫn xác định, anh ấy đưa ra một ví dụ về cách kiểm tra xem một giá trị có phải là NaN :

x !== x

Điều này sẽ dẫn đến ĐÚNG VẬYnếu và chỉ nếu xĐúng NaN .

Nhưng bây giờ tôi có một câu hỏi: tại sao anh ấy lại dùng phép so sánh chặt chẽ? Bởi vì có vẻ như

x != x

Cư xử theo cùng một cách. Sử dụng cả hai phiên bản có an toàn không hay tôi đang thiếu thứ gì đó trong JavaScript sẽ trả về ĐÚNG VẬY giá trị cho x !== xSAIx != x ?

câu trả lời hay nhất

Đầu tiên, hãy để tôi chỉ ra NaN là một giá trị rất đặc biệt: theo định nghĩa, nó không bằng chính nó. Điều này xuất phát từ tiêu chuẩn IEEE-754 làm cơ sở cho các số JavaScript. Giá trị "không phải số" không bao giờ bằng chính nó, ngay cả khi các bit khớp chính xác. (Chúng không nhất thiết phải có trong IEEE-754, cho phép nhiều giá trị "không phải số" khác nhau.) Đó là lý do tại sao điều này xảy ra; tất cả các giá trị khác trong JavaScript đều bằng chính chúng,NaN Chỉ đặc biệt thôi.

...tôi có bỏ lỡ giá trị nào trong JavaScript sẽ trả về true cho x !== x và false cho x != x không?

Không, bạn không phải vậy. !==!= Sự khác biệt duy nhất là cái sau sẽ thực hiện ép kiểu khi cần thiết để tạo ra các toán hạng cùng loại. hiện hữu x != x trong , các loại toán hạng giống nhau, vì vậy và x !== x Hoàn toàn giống nhau.

Điều này bắt đầu từ Phép toán Trừu tượng Bình đẳng Định nghĩa của nó là rõ ràng ngay từ đầu. :

  1. Trả vềNếuĐột ngột(x).
  2. Trả vềNếuĐột ngột(y).
  3. Nếu Type(x) giống với Type(y), thì

    Trả về kết quả thực hiện So sánh đẳng thức nghiêm ngặt x === y.

  4. ...

Hai bước đầu tiên là hệ thống ống nước cơ bản. Vì vậy, thực sự,== Bước đầu tiên là xem các loại có giống nhau không và nếu có, hãy thực hiện thay thế ===!=!== Chỉ là một phiên bản tiêu cực của nó.

Vì vậy, nếu Flanagan đúng thì chỉ NaNx !== x là đúng, chúng ta có thể chắc chắn rằng chỉ NaN sẽ được x != x Mang lại giá trị đích thực.

Theo mặc định, nhiều lập trình viên JavaScript sử dụng ===!== Để tránh một số cạm bẫy của việc ép kiểu do các toán tử lỏng lẻo thực hiện, không có gì cần đọc về việc Flanagan sử dụng các toán tử chặt chẽ và lỏng lẻo trong trường hợp này.

Về javascript - sự khác biệt giữa (NaN != NaN) và (NaN !== NaN) là gì? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/34261938/

26 4 0
Cựu chiến binh CNTT
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress