Số học (-, *, /)
Ép cả hai về Number
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!
"5" * 2; // 10 → "5" bị ép thành 5"10" - 1; // 9"6" / "3"; // 2+ đặc biệt: nếu có string → nối chuỗi1 + "2"; // "12" (số → chuỗi)"2" + 1; // "21"== tự ép kiểu0 == false; // true (đã coercion)"" == 0; // truenull == undefined; // trueif ("hello") { /* chạy vì truthy */ }!!"hello"; // true!!0; // false!![]; // true!!{}; // true| Giá trị | Mô tả |
|---|---|
false | Boolean false |
0, -0 | Số 0 |
"" | Empty string |
null | Null |
undefined | Undefined |
NaN | Not a Number |
// 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