Những điều nên tránh khi viết JavaScript
Danh sách những điều nên tránh khi lập trình JavaScript
Dưới đây là danh sách những điều nên tránh khi lập trình JavaScript, chẳng hạn như sử dụng new Object() thay vì object literal, dùng == thay vì ===, sử dụng eval, with hoặc chỉnh sửa prototype của các đối tượng dựng sẵn.
1. Không tạo object bằng new Object()
Thay vì:
const obj = new Object();
Hãy sử dụng object literal:
const obj = {};
2. Không tạo mảng bằng new Array()
Thay vì:
const arr = new Array();
Hãy ưu tiên cú pháp mảng:
const arr = [];
3. Tránh sử dụng các block không cần thiết
Chỉ sử dụng khối lệnh ({}) khi cú pháp yêu cầu, chẳng hạn như:
ifswitch- Các vòng lặp (
for,while,do...while) try...catch
Không nên thêm các block thừa làm giảm khả năng đọc mã nguồn.
4. Không gán giá trị bên trong điều kiện của if hoặc while
5. Không sử dụng == và !=
Luôn sử dụng:
===!==
để tránh việc ép kiểu (type coercion) ngoài ý muốn.
Ví dụ:
0 == false; // true
0 === false; // false
6. Không sử dụng eval()
Không nên sử dụng eval() vì:
- Gây giảm hiệu năng do phải chạy lại trình thông dịch/trình biên dịch.
- Tiềm ẩn rủi ro bảo mật (đặc biệt khi xử lý dữ liệu từ người dùng).
- Khiến việc gỡ lỗi (debug) trở nên khó khăn hơn.
7. Không sử dụng with
Từ khóa with làm thay đổi scope chain (chuỗi phạm vi), khiến mã nguồn khó hiểu và dễ gây nhầm lẫn.
8. Luôn truyền một hàm vào setTimeout() và setInterval()
Nên viết:
setTimeout(() => {
console.log('Hello');
}, 1000);
9. Không sử dụng Array như một mảng kết hợp (associative array)
Nếu cần lưu trữ dữ liệu theo cặp key-value, hãy sử dụng Object thay vì Array.
Không nên:
const arr = [];
arr['name'] = 'John';
Nên dùng:
const obj = {
name: 'John',
};
Thực tế, khả năng lưu trữ thuộc tính theo khóa này đến từ Object.prototype, không phải từ Array. Vì vậy, nếu chỉ cần key-value thì Object là lựa chọn phù hợp hơn.
10. Không tạo chuỗi nhiều dòng bằng dấu \
Không nên viết:
const str =
'Hello \
World';
Đây không phải là một phần chuẩn của ECMAScript.
Thay vào đó, hãy nối chuỗi:
const str = 'Hello ' + 'World';
Lưu ý: Trong JavaScript hiện đại (ES2015+), bạn nên sử dụng Template Literals:
const str = `Hello
World`;
11. Không sửa đổi prototype của các đối tượng dựng sẵn
Không nên sửa đổi prototype của:
ObjectArray
Việc này có thể gây ra các lỗi khó phát hiện và làm ảnh hưởng đến toàn bộ ứng dụng.
Đối với các prototype khác (ví dụ Function.prototype), cũng cần hết sức thận trọng vì việc mở rộng chúng có thể dẫn đến những lỗi khó debug.