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

JavaScript: Tại sao toán tử % hoạt động trên chuỗi? (Ép kiểu)

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'.