JavaScript là một ngôn ngữ lập trình mạnh mẽ và linh hoạt, nhưng nếu bạn không có kiến thức vững chắc, có thể bạn sẽ gặp không ít khó khăn. Dưới đây là danh sách 20 mẹo hữu ích mà mọi lập trình viên JavaScript cần nắm rõ để nâng cao chất lượng mã nguồn, giúp nó trở nên sạch sẽ, dễ hiểu và hiệu quả hơn.
1. **Sử Dụng ===
Thay Thế ==
- Sử dụng
===
để so sánh cả giá trị và kiểu dữ liệu, từ đó tránh được các lỗi do việc chuyển đổi kiểu tự động có thể xảy ra.
javascript
console.log(5 === '5'); // false
console.log(5 == '5'); // true
2. **Chọn const
và let
Thay Việc Sử Dụng var
var
có phạm vi trong hàm và có thể gây ra lỗi không mong muốn. Sử dụngconst
vàlet
không chỉ giúp mã nguồn của bạn an toàn hơn mà còn dễ hiểu hơn.
3. **Phân Tách Đối Tượng (Object Destructuring)
- Kỹ thuật phân tách đối tượng giúp bạn dễ dàng lấy được các thuộc tính của một đối tượng mà không cần phải truy cập từng thuộc tính một.
javascript
const user = { name: 'Tuan', age: 25 };
const { name, age } = user;
4. **Phân Tách Mảng (Array Destructuring)
- Phân tách mảng giúp bạn nhanh chóng gán giá trị mảng cho các biến.
javascript
const [first, second] = [10, 20];
5. **Sử Dụng Arrow Function
- Arrow function giúp làm cho mã nguồn trở nên ngắn gọn và dễ đọc hơn, đồng thời cung cấp
this
cố định từ phạm vi bên ngoài.
javascript
const add = (a, b) => a + b;
6. **Áp Dụng Template Literals
- Template literals cho phép bạn dễ dàng chèn biến vào trong chuỗi, tạo ra những câu lệnh rõ ràng hơn.
javascript
const name = 'Tuan';
console.log(`Xin chào, ${name}!`);
7. **Sử Dụng Nullish Coalescing Operator (??
)
- Dùng
??
để thiết lập giá trị mặc định cho biến khi giá trị lànull
hoặcundefined
.
javascript
const value = null;
const defaultValue = value ?? 'default';
8. **Sử Dụng Optional Chaining (?.
)
- Optional chaining giúp bạn tránh những lỗi không cần thiết khi cố gắng truy cập đến các thuộc tính không tồn tại trong đối tượng.
javascript
const user = {};
console.log(user?.address?.city); // undefined
9. **Sử Dụng Default Parameters
- Cung cấp giá trị mặc định cho các tham số giúp hàm của bạn hoạt động hiệu quả hơn ngay cả khi thiếu dữ liệu.
javascript
function greet(name = 'Guest') {
return `Xin chào, ${name}`;
}
10. **Sử Dụng Spread Operator
- Spread operator giúp bạn sao chép và kết hợp các đối tượng hoặc mảng một cách nhanh chóng và dễ dàng.
javascript
const arr1 = [1, 2];
const arr2 = [...arr1, 3, 4];
11. **Sử Dụng Rest Parameters
- Sử dụng rest parameters để thu thập các tham số còn lại thành một mảng.
javascript
function add(...numbers) {
return numbers.reduce((a, b) => a + b);
}
12. **Chuyển Đổi NodeList
Thành Mảng Với Array.from()
- Dùng
Array.from()
để chuyển đổi mộtNodeList
từ DOM thành mảng, giúp bạn thao tác dễ dàng hơn.
javascript
const elements = Array.from(document.querySelectorAll('p'));
13. **Xử Lý Mã Bất Đồng Bộ Với async
/ await
- Sử dụng
async
vàawait
để xử lý mã bất đồng bộ ở dạng dễ hiểu hơn so với việc sử dụng callback hay chuỗithen
.
javascript
async function fetchData() {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
}
14. **Sử Dụng Promise.all
Để Xử Lý Nhiều Promise
Promise.all
cho phép bạn thực thi nhiều promise đồng thời và nhận kết quả khi tất cả hoàn thành.
javascript
const [data1, data2] = await Promise.all([fetchData1(), fetchData2()]);
15. **Sử Dụng Array.map
Để Xử Lý Dữ Liệu Mảng
map()
tạo một mảng mới từ việc thực hiện một hàm trên mỗi phần tử của mảng.
javascript
const numbers = [1, 2, 3];
const doubled = numbers.map(num => num * 2);
16. **Lọc Mảng Với Array.filter
filter()
tạo một mảng mới chứa các phần tử thoả mãn điều kiện đã chỉ định.
javascript
const numbers = [1, 2, 3, 4];
const evens = numbers.filter(num => num % 2 === 0);
17. **Tính Toán Dữ Liệu Với Array.reduce
reduce()
giúp bạn tính toán hoặc xử lý dữ liệu theo logic tùy chỉnh rất linh hoạt.
javascript
const numbers = [1, 2, 3];
const sum = numbers.reduce((acc, num) => acc + num, 0);
18. **Sắp Xếp Mảng Với Array.sort
sort()
cho phép bạn sắp xếp phần tử trong mảng theo thứ tự mà bạn đã chỉ định.
javascript
const numbers = [3, 1, 2];
numbers.sort((a, b) => a - b);
19. **Xóa Phần Tử Khỏi Mảng Với splice
Hoặc filter
- Dùng
splice()
để thay đổi mảng gốc, trong khifilter()
tạo ra một mảng mới mà không chỉnh sửa mảng gốc.
javascript
const numbers = [1, 2, 3];
numbers.splice(1, 1); // Xóa phần tử thứ hai
const newArray = numbers.filter(num => num !== 2); // Không thay đổi mảng gốc
20. **Dùng console.table
Để Debug Dễ Dàng Hơn
console.table()
giúp hiển thị dữ liệu theo dạng bảng, giúp bạn dễ dàng đọc hiểu hơn, đặc biệt với các đối tượng và mảng phức tạp.
javascript
const users = [
{ name: 'Hoang', age: 25 },
{ name: 'Anh', age: 30 }
];
console.table(users);
JavaScript là một ngôn ngữ rất phong phú với nhiều cách để tổ chức mã nguồn một cách sáng tạo và hiệu quả. Hãy thử áp dụng những mẹo này vào các dự án của bạn và bạn sẽ thấy sự khác biệt rõ rệt trong quá trình phát triển phần mềm.