Bỏ qua để đến nội dung

Explicit Type Casting (Ép Kiểu Tường Minh)

Bạn chỉ định rõ muốn đổi sang kiểu gì — code rõ ràng, dễ bảo trì và ít bug hơn coercion ngầm.


Number("3.14"); // 3.14 (chuẩn, fail → NaN)
parseInt("08", 10); // 8 (NHỚ truyền radix)
parseFloat("2.5px"); // 2.5 (dừng ở chỗ không phải số)
+"42"; // 42 (nhanh nhưng kém rõ ràng)
Phương thứcXử lý thập phânDừng ở ký tự không phải sốKhuyến nghị
Number()Không (trả về NaN)Hầu hết trường hợp
parseInt()KhôngLấy số nguyên
parseFloat()Lấy số thập phân
+valueKhôngNhanh nhưng kém rõ

  1. Dùng === thay cho == để tránh coercion ngoài ý muốn

    // BAD
    if (value == null) { }
    // GOOD
    if (value === null || value === undefined) { }
  2. Khi cần số thực, ưu tiên Number(); khi cần nguyên từ chuỗi, dùng parseInt(str, 10)

    const price = Number("19.99"); // 19.99
    const age = parseInt("25", 10); // 25
  3. Ép tường minh ở rìa hệ thống (input UI/API/file) thay vì trông chờ JS ép hộ

    const userInput = document.getElementById("age").value;
    const age = Number(userInput);
    if (isNaN(age)) {
    console.error("Invalid age");
    }
  4. Tránh trộn BigInt với Number trong 1 biểu thức

    1n + 1; // TypeError
    1n + BigInt(1); // OK: 2n

function validateAge(input) {
const age = Number(input);
if (isNaN(age)) {
return "Vui lòng nhập số hợp lệ";
}
if (age < 0 || age > 150) {
return "Tuổi không hợp lệ";
}
return "OK";
}

Implicit casting

JS tự động ép kiểu, có thể gây bug khó debug

Explicit casting

Bạn kiểm soát, code rõ ràng hơn