Thay vì kludging nó để bạn có thể tiếp tục, tại sao không sao lưu và tự hỏi tại sao bạn lại chạy vào NAN ngay từ đầu?
Nếu bất kỳ đầu vào số nào cho hoạt động là NAN, đầu ra cũng sẽ là NAN. Đó là cách mà tiêu chuẩn điểm nổi hiện tại của IEEE hoạt động (nó không chỉ là JavaScript). Hành vi đó là vì một lý do chính đáng: ý định cơ bản là để bạn không sử dụng kết quả không có thật mà không nhận ra đó là không có thật.
Cách thức hoạt động của NAN là nếu có điều gì đó không ổn trong một số hoạt động phụ trợ phụ (tạo ra NAN ở cấp độ thấp hơn), kết quả cuối cùng cũng sẽ là NAN, bạn sẽ nhận ra ngay lập tức là một lỗi ngay cả khi Logic xử lý lỗi (ném/bắt có thể?) Vẫn chưa hoàn thành.
Nan là kết quả của một phép tính số học luôn cho thấy một cái gì đó đã trở nên tồi tệ trong các chi tiết của số học. Đó là một cách để máy tính nói "gỡ lỗi cần thiết ở đây". Thay vì tìm cách nào đó để tiếp tục với một số số mà hầu như không đúng (là 0 thực sự là những gì bạn muốn?), Tại sao không tìm thấy vấn đề và khắc phục nó.
Một vấn đề phổ biến trong JavaScript là cả parseInt(...) và parseFloat(...) sẽ trả lại NAN nếu đưa ra một đối số vô nghĩa (const y = 5 * "Apples"; // NaN isNaN("5") || 0 0, const y = 5 * "Apples"; // NaN isNaN("5") || 0 1, v.v.). Khắc phục sự cố ở cấp độ thấp nhất có thể thay vì ở cấp độ cao hơn. Sau đó, kết quả của tính toán tổng thể có cơ hội tốt để có ý nghĩa và bạn không thay thế một số số ma thuật (0 hoặc 1 hoặc bất cứ điều gì) cho kết quả của toàn bộ tính toán. (Thủ thuật của (parseInt (foo.value) |
Có lẽ để dễ dàng mã hóa, bạn muốn có một hàm để lấy giá trị từ người dùng, làm sạch nó và cung cấp giá trị mặc định nếu cần thiết, như thế này:
function getFoobarFromUser(elementid) { var foobar = parseFloat(document.getElementById(elementid).innerHTML) if (isNaN(foobar)) foobar = 3.21; // default value return(foobar.toFixed(2)); }JavaScript NAN là giá trị trả về từ các hoạt động có kết quả số không xác định. NAN là một giá trị lỗi có nghĩa là không phải là một số. Dưới đây là 4 phương pháp với các ví dụ để tránh NAN trong JavaScript.
Mã ví dụ đơn giản.
1. Hoạt động toán học với các giá trị chuỗi không phải là số
Đôi khi các giá trị được chuỗi có thể quay lại từ API, chỉ cần kiểm tra xem giá trị là const y = 5 * "Apples"; // NaN isNaN("5") || 0 2 ngay từ đầu.
const y = 5 * "Apples"; // NaN isNaN("5") || 0Để tránh nó hoàn toàn, nó tốt nhất nếu bạn thực hiện tất cả các hoạt động toán học của mình với các số.
2. Hoạt động toán học với các chức năng
Thực hiện các hoạt động toán học với một hàm sẽ dẫn đến giá trị const y = 5 * "Apples"; // NaN isNaN("5") || 0 2.
function fooBar() { // ...stuff } fooBar * 5 // NaN3. Hoạt động toán học với các đối tượng
Thực hiện các hoạt động toán học với một đối tượng JavaScript sẽ dẫn đến giá trị const y = 5 * "Apples"; // NaN isNaN("5") || 0 2.
const obj = {}; obj * 5 // NaN4. Các hoạt động toán học với các giá trị giả tưởng
Tránh thực hiện các hoạt động toán học với các giá trị giả mạo như:
- const y = 5 * "Apples"; // NaN isNaN("5") || 0 5
- const y = 5 * "Apples"; // NaN isNaN("5") || 0 2
- const y = 5 * "Apples"; // NaN isNaN("5") || 0 0
- const y = 5 * "Apples"; // NaN isNaN("5") || 0 8
- Chuỗi trống (const y = 5 * "Apples"; // NaN isNaN("5") || 0 9)
Output::
Trả về 0 nếu giá trị đầu vào là nan
Cách ngắn nhất:
var number = (yourVariable || 0)Vì const y = 5 * "Apples"; // NaN isNaN("5") || 0 2 là một giá trị giả, điều này sẽ trả về 0 bất cứ khi nào function fooBar() { // ...stuff } fooBar * 5 // NaN1 là NAN.
Một cách để kiểm tra, nếu một số là NAN hoặc không sử dụng hàm function fooBar() { // ...stuff } fooBar * 5 // NaN2.
isNaN(yourVariable); // Returns true is yourVariable is NaNLàm cách nào để ngăn đầu ra của tôi là NAN?
Trả lời: Chỉ cần đặt một biến thành ParseInt (Mạnh) và kiểm tra để đảm bảo rằng đó là một số sử dụng function fooBar() { // ...stuff } fooBar * 5 // NaN3.: Just set a variable to parseInt(…) and check to make sure that it is a number using function fooBar() { // ...stuff } fooBar * 5 // NaN3.
let val = parseInt(Value); if (!isNaN(val)) //CODE }Hãy bình luận nếu bạn có bất kỳ nghi ngờ hoặc đề xuất nào về chủ đề JS NAN này.
Lưu ý: & nbsp; The & nbsp; tất cả các ví dụ JS & nbsp; is & nbsp; được kiểm tra trên trình duyệt firefox và trình duyệt Chrome. The All JS Examples codes are tested on the Firefox browser and the Chrome browser.
Hệ điều hành: & nbsp; windows 10Windows 10
Mã: Phiên bản HTML 5
Bằng cấp về Khoa học máy tính và Kỹ sư: Nhà phát triển ứng dụng và có nhiều ngôn ngữ lập trình kinh nghiệm. Sự nhiệt tình cho công nghệ và thích học kỹ thuật.