Có. JavaScript switch sử dụng so sánh strict equality (===) – so sánh cả giá trị và kiểu dữ liệu. Không có type coercion như ==.
Ví dụ chứng minh
switch(1) {
case '1':
alert('Switch comparison: Not Strict.');
break;
case 1:
alert('Switch comparison: Strict.');
break;
default:
alert('Default');
}
// Kết quả: "Switch comparison: Strict."
Tại sao an toàn?
switch (x) { case y: }tương đươngif (x === y).- Không xảy ra:
1 == '1' // truenhưngswitch(1) { case '1': }không match. - Ngăn chặn bug type coercion ngầm (ví dụ:
0 == '0',null == undefined,[] == '').
Lưu ý
caseexpression được đánh giá tại runtime – có thể dùng biến, function call.- Multiple cases gom chung:
case 1: case 2: case 3: ... - Fall-through: thiếu
breaksẽ chạy case tiếp theo (có thể dùng ý định với comment// fall through).
Best practice
- Luôn dùng
===trong code thường (if/else) – nhất quán với switch. - Eslint rule:
eqeqeq: ["error", "always"]. - TypeScript: strict mode bắt buộc strict equality.