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

Có an toàn khi giả định so sánh nghiêm ngặt (strict comparison) trong switch JavaScript không?

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 đương if (x === y).
  • Không xảy ra: 1 == '1' // true nhưng switch(1) { case '1': } không match.
  • Ngăn chặn bug type coercion ngầm (ví dụ: 0 == '0', null == undefined, [] == '').

Lưu ý

  • case expression đượ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 break sẽ 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.