Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Cách kiểm tra giá trị có phải là số (number) trong JavaScript?

Có nhiều cách kiểm tra, tùy mục đích:

1. Number.isInteger() — Chỉ số nguyên (ES6)

Number.isInteger(30);   // true
Number.isInteger(30.5); // false
Number.isInteger("30"); // false
Number.isInteger(NaN);  // false

2. Number.isFinite() — Số hữu hạn (không NaN, không Infinity)

Number.isFinite(30);      // true
Number.isFinite(30.5);    // true
Number.isFinite(Infinity); // false
Number.isFinite(NaN);     // false

3. typeof + Number.isFinite() — Kiểm tra kiểu number hợp lệ

function laSoHopLe(val) {
    return typeof val === 'number' && Number.isFinite(val);
}
laSoHopLe(10);      // true
laSoHopLe(10.5);    // true
laSoHopLe("10");    // false
laSoHopLe(NaN);     // false
laSoHopLe(Infinity); // false

4. isNaN() vs Number.isNaN()

isNaN("hello");       // true (ép kiểu -> NaN)
Number.isNaN("hello"); // false (không ép kiểu)
Number.isNaN(NaN);     // true

Ví dụ: Number.isInteger()

<!DOCTYPE html>
<html>
<body>
    <script>
        document.write(Number.isInteger(30) + "<br>");     // true
        document.write(Number.isInteger(true) + "<br>");   // false
        document.write(Number.isInteger(false) + "<br>");  // false
        document.write(Number.isInteger(-30) + "<br>");    // true
    </script>
</body>
</html>

Tóm tắt khi nào dùng cái nào:

Mục đíchHàm khuyến nghị
Chỉ số nguyên (int)Number.isInteger()
Số bất kỳ (int/float), không NaN/Infinitytypeof x === 'number' && Number.isFinite(x)
Kiểm tra NaNNumber.isNaN()
Kiểm tra "giống số" (parse được)!isNaN(parseFloat(x)) && isFinite(x)