Xét đoạn mã cho kết quả bất ngờ: toán tử modulo hoạt động với chuỗi, và nối chuỗi cho kết quả kỳ lạ.
Ví dụ
const numStr = '127'; const result = numStr % 5; const firstName = 'Armaan'; const lastName = 'Malik'; const fullName = firstName + + lastName; console.log('modulo result: ', result); console.log('full name: ', fullName);Kết quả
modulo result: 2 full name: ArmaanNaN
Trước tiên, hiểu về Ép kiểu (Type Coercion) – JavaScript tự chuyển đổi kiểu dữ liệu.
Ép kiểu ngầm (Implicit Type Coercion)
- Chuỗi (khi dùng với toán tử + nhị phân).
- Số (khi dùng với toán tử số học +, -, /, *, % và chỉ toán tử + đơn mục).
- Boolean (khi dùng với toán tử logic &, |, !).
Lưu ý: Độ ưu tiên của toán tử + đơn mục cao hơn + nhị phân.
Giải thích mã
Dòng 2 → result = '127' % 5;
Ép kiểu ngầm thấy % nên chuyển '127' thành số 127, kết quả 2.
Dòng 5 → fullName = firstName + + lastName;
fullName = firstName + (+lastName);
Do ưu tiên đơn mục, +lastName thành NaN, sau đó nối chuỗi: 'Armaan' + NaN = 'ArmaanNaN'.