Chuyển đến nội dung chính
Mô-đun 2 · Bài học 4 trong tổng số 48/32 trong khóa học~8 min
Bài học theo mô-đun (4/4)

Chuyển đổi loại

Bạn luôn cần chuyển đổi loại của một giá trị: value của đầu vào HTML xuất hiện dưới dạng một chuỗi ngay cả khi nó đại diện cho một số, một API trả về chuỗi về định dạng, bạn cần ghi nhật ký một đối tượng dưới dạng văn bản. Ưu đãi của JS ba nhóm chuyển đổi: trình phân tích cú pháp rõ ràng, chuyên dụng và (được tránh) những cái ngầm.

Chuyển đổi rõ ràng

Đây là những điều rõ ràng nhất và phải là mặc định của bạn:

JS
Number('42'); // 42
Number('3.14'); // 3.14
Number(''); // 0     ← careful
Number('  10 '); // 10     (spaces are ignored)
Number('ciao'); // NaN    ← does not represent a number

String(42); // '42'
String(true); // 'true'
String(null); // 'null'
String(undefined); // 'undefined'

Boolean(1); // true
Boolean(0); // false
Boolean(''); // false
Boolean('abc'); // true

parseInt và parseFloat: trình phân tích cú pháp dung sai

Không giống như Number(...), parseInt và parseFloat bỏ qua phần không phải là số tail của chuỗi: chúng dừng ở ký tự không hợp lệ đầu tiên.

JS
Number('42px'); // NaN
parseInt('42px'); // 42
parseFloat('3.14em'); // 3.14
parseInt('   12 anni'); // 12
parseInt('ciao12'); // NaN  ← must start with digits

toFixed để định dạng số dưới dạng chuỗi

Xem ngắn gọn trong bài học trước: làm tròn đến N số thập phân và trả về một chuỗi.

JS
(3.14159).toFixed(2); // '3.14'
(1).toFixed(2); // '1.00'

Để chuyển đổi nó trở lại thành number, hãy sử dụng tiền tố Number(...) hoặc đơn phân +:

JS
Number((3.14159).toFixed(2)); // 3.14
+(3.14159).toFixed(2); // 3.14

NaN: giá trị cắn

NaN ("Không phải số") được tạo ra bởi các phép tính số không thành công:

JS
Number('ciao'); // NaN
0 / 0; // NaN
parseInt('xxx'); // NaN

Đặc trưng:

  • nó có loại 'number' (vâng, "không phải số" là một số)
  • nó không bằng chính nó: NaN === NaN là false
  • để kiểm tra, hãy sử dụng hàm Number.isNaN(x)
JS
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // true

Hãy thử nó

tập thể dục#js.m2.l4.e1
Nỗ lực: 0Đang tải…

Cho chuỗi '128,95 EUR', trích xuất số (thập phân) và làm tròn nó thành số nguyên gần nhất, trả về dưới dạng số. Dự kiến: 129.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

ParspFloat bỏ qua 'EUR'; .toFixed(0) làm tròn thành số nguyên dưới dạng chuỗi; Number(...) chuyển đổi trở lại thành số.

Giải pháp khả dụng sau 3 lần thử

Xem lại bài tập

tập thể dục#js.m2.l4.e2
Nỗ lực: 0Đang tải…

Cho `n = Number('non un numero')`, hãy viết một biểu thức đánh giá là đúng nếu kết quả là NaN.

Đang tải trình chỉnh sửa…
Hiển thị gợi ý

Sử dụng Number.isNaN, không phải n === NaN: NaN không bằng chính nó.

Giải pháp khả dụng sau 3 lần thử