Kiểm tra số có phải là NaN trong JavaScript (Number.isNaN) | Laptrinhcanban.com

Kiểm tra số có phải là NaN trong JavaScript (Number.isNaN)

Hướng dẫn cách kiểm tra số có phải là NaN trong JavaScript. Bạn sẽ học được cách sử dụng phương thức Number.isNaN trong JavaScript để kiểm tra một số có phải là NaN hay không, cũng như tìm hiểu sự khác biệt giữa isNaN và Number.isNaN trong JavaScript sau bài học này.

Kiểm tra số có phải là NaN trong JavaScript | Number.isNaN

Number.isNaN là một phương thức trong Number Object, có tác dụng kiểm tra một đối tượng có phải thuộc kiểu số và giá trị của nó có phải là NaN hay không.

NaN ở đây là viết tắt của cụm từ tiếng Anh là Not A Number, là một thuộc tính global có giá trị đại diện cho khái niệm Not-A-Number (Không-phải-Số). Thuộc tính NaN là một thuộc tính đặc biệt, chúng ta không thể so sánh NaN với chính nó theo kiểu như NaN == NaN hay NaN === NaN được, vì thế chúng ta cần phải dùng tới phương thức đặc biệt để kiểm tra nó.

Để kiểm tra thuộc tính global NaN, chúng ta cần dùng tới hàm global isNaN(), còn trong Number Object, chúng ta sẽ dùng tới thuộc tính Number.isNaN để kiểm tra.

Cách sử dụng phương thức Number.isNaN trong JavaScript để kiểm tra đối tượng có phải thuộc kiểu số và giá trị của nó có phải là NaN như sau:

Number.isNaN(object);

Trong đó object là đối tượng cần kiểm tra có phải thuộc kiểu số và giá trị của nó có phải là NaN hay không.

Phương thức Number.isNaN() sẽ kiểm tra đối tượng chỉ định có phải thuộc kiểu số, và có giá trị NaN hay không. Nếu đối tượng đã cho không thuộc kiểu số, giá trị false sẽ được trả về.

Ví dụ cụ thể sử dụng Number.isNaN() trong JavaScript:

Number.isNaN(NaN);        // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0); // true

Các giá trị sau đây thuộc kiểu số và không phải giá trị NaN nên giá trị false được trả về:

Number.isNaN(37);      // false

Number.isNaN(12.345); // false

Các giá trị sau đây không thuộc kiểu số nên giá trị false được trả về mà không cần tới việc xét NaN:

Number.isNaN('37');      // false
Number.isNaN('37.37'); // false
Number.isNaN(''); // false
Number.isNaN(' '); // false

Number.isNaN('NaN'); // false
Number.isNaN(undefined); // false
Number.isNaN({}); // false
Number.isNaN('blabla'); // false

Number.isNaN(true); // false
Number.isNaN(null); // false

Sự khác biệt giữa isNaN và Number.isNaN trong JavaScript

Hàm global isNaN() và phương thức thành viên Number.isNaN trong JavaScript đều được sử dụng để xác định giá trị của một đối tượng có phải là NaN hay không. Tuy nhiên khi xử lý một đối tượng không thuộc kiểu số thì chúng sẽ hoạt động hoàn toàn khác nhau.

  1. Nếu đối tượng chỉ định không thuộc kiểu số, hàm isNaN() sẽ chuyển đối tượng đó về kiểu số, rồi sau đó mới kiểm tra đối tượng thuộc kiểu số đó có giá trị NaN không.

  2. Ngược lại với phương thức Number.isNaN() thì nếu đối tượng chỉ định không thuộc kiểu số thì giá trị false sẽ ngay lập tức được trả về.

Hãy cùng xem sự khác biệt giữa isNaN và Number.isNaN qua các ví dụ sau:

isNaN(NaN);
// true
Number.isNaN(NaN);
// true

isNaN(0 / 0);
// true
Number.isNaN(0 / 0);
// true

isNaN('Hello');
// true
Number.isNaN('Hello');
// false

isNaN(undefined);
// true
Number.isNaN(undefined);
// false

isNaN({a:'10'});
// true
Number.isNaN({a:'10'});
// false

Có thể thấy rõ khi kiểm tra giá trị NaN, hay là kết quả của một phép tính thì cả hai phương pháp đều cho ra giá trị true. Tuy nhiên cũng có những trường hợp mà có sự khác biệt về kết quả giữa isNaN và Number.isNaN.

Bởi vậy, nếu bạn muốn kiểm tra giá trị NaN với đối tượng thuộc kiểu số, hãy dùng phương thức Number.isNaN để cho ra kết quả chính xác.

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách kiểm tra số có phải là NaN trong JavaScript bằng Number.isNaN rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về JavaScript trong các bài học tiếp theo.

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.