Vấn đề tính tùy chọn của dấu ngoặc nhọn trong if-else
Mặc dù JavaScript cho phép các cách viết tắt với dấu ngoặc nhọn như đã trình bày ở trên, nhưng nhìn chung tôi không khuyến khích làm như vậy, bởi vì đó là mảnh đất màu mỡ cho những lỗi khó phát hiện. Chẳng hạn, giả sử có đoạn mã sau:
let test = 3;
if (test > 0)
console.log(test);
Giả sử bây giờ chúng ta quyết định trong trường hợp
điều kiện đúng, sẽ in thêm một thông báo thứ hai
với văn bản '+++':
let test = 3;
if (test > 0)
console.log(test);
console.log('+++');
Tuy nhiên, nếu không có dấu ngoặc nhọn thì bên trong điều kiện chỉ có thông báo đầu tiên. Tức là dòng đầu tiên sẽ được thực thi khi điều kiện đúng, còn dòng thứ hai - luôn luôn.
Trên thực tế, mã của chúng ta tương đương với mã như sau:
let test = 3;
if (test > 0) {
console.log(test);
}
console.log('+++'); // dòng này hóa ra lại nằm ngoài điều kiện
Còn chúng ta lại muốn có mã như thế này:
let test = 3;
if (test > 0) {
console.log(test);
console.log('+++'); // dòng này nằm trong điều kiện
}
Chính vì lý do này, nên luôn khuyến nghị đặt dấu ngoặc nhọn, để không mắc phải những lỗi kiểu như vậy.