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:
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'); // trueparseInt 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.
Number('42px'); // NaN
parseInt('42px'); // 42
parseFloat('3.14em'); // 3.14
parseInt(' 12 anni'); // 12
parseInt('ciao12'); // NaN ← must start with digitstoFixed để đị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.
(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
+:
Number((3.14159).toFixed(2)); // 3.14
+(3.14159).toFixed(2); // 3.14NaN: 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:
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 === NaNlàfalse - để kiểm tra, hãy sử dụng hàm
Number.isNaN(x)
const x = Number('ciao');
x === NaN; // false (!)
Number.isNaN(x); // trueHãy thử nó
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.
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
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.
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ử