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

Implicit Type Casting (Ép Kiểu Ngầm)

JavaScript sẽ tự đổi kiểu để “làm vừa” toán tử/ngữ cảnh. Đây là hành vi ngầm — có thể tiện lợi nhưng cũng dễ gây bug!


1. Toán tử số học (trừ, nhân, chia…) ép về Number

Phần tiêu đề “1. Toán tử số học (trừ, nhân, chia…) ép về Number”
"5" * 2; // 10 → "5" bị ép thành 5
"10" - 1; // 9
"6" / "3"; // 2

2. Toán tử + đặc biệt: nếu có string → nối chuỗi

Phần tiêu đề “2. Toán tử + đặc biệt: nếu có string → nối chuỗi”
1 + "2"; // "12" (số → chuỗi)
"2" + 1; // "21"

0 == false; // true (đã coercion)
"" == 0; // true
null == undefined; // true

4. Ép sang Boolean trong điều kiện (truthy/falsy)

Phần tiêu đề “4. Ép sang Boolean trong điều kiện (truthy/falsy)”
if ("hello") { /* chạy vì truthy */ }
!!"hello"; // true
!!0; // false
!![]; // true
!!{}; // true
Giá trịMô tả
falseBoolean false
0, -0Số 0
""Empty string
nullNull
undefinedUndefined
NaNNot a Number

5. Một số toán tử/ngữ cảnh khác gây coercion

Phần tiêu đề “5. Một số toán tử/ngữ cảnh khác gây coercion”
// Unary plus
+"42"; // 42
// Bitwise (ép về 32-bit int)
3.9 | 0; // 3
// So sánh < , >
"2" > "12"; // true (so sánh chuỗi theo từ vựng)
"2" > 12; // false (đã ép về số)

Số học (-, *, /)

Ép cả hai về Number

Toán tử +

Nếu có string → nối chuỗi, không phải cộng số

So sánh ==

Tự ép kiểu → dễ gây bug. Dùng === thay thế!

Truthy/Falsy

6 giá trị falsy, còn lại đều truthy