Xin chào tất cả những người đam mê lập trình! Hôm nay, chúng ta sẽ khám phá thế giới JavaScript, một ngôn ngữ cốt lõi của web, và tìm hiểu một số mẹo có thể nâng cao kỹ năng lập trình của bạn lên một tầm cao mới.
Dù bạn là lập trình viên mới bắt đầu hay đã có kinh nghiệm, những mẹo JavaScript này chắc chắn sẽ mang đến một chiều sâu mới cho kho công cụ lập trình của bạn. Hãy cùng bắt đầu nhé!
1. Destructuring (Phá vỡ đối tượng)
Destructuring trong JavaScript là một cách tiện dụng để trích xuất nhiều thuộc tính từ một đối tượng hoặc mảng chỉ trong một câu lệnh. Nó giúp mã của bạn ngắn gọn và dễ đọc hơn. Ví dụ:
let [a, b] = [1, 2];
console.log(a); // outputs: 1
console.log(b); // outputs: 2
Cũng có thể làm tương tự với các đối tượng:
let {name, age} = {name: "John", age: 22};
console.log(name); // outputs: John
console.log(age); // outputs: 22
2. Optional Chaining (Chuỗi tùy chọn)
Optional chaining là một tính năng mới của JavaScript (ES2020), cho phép bạn truy cập các thuộc tính sâu trong đối tượng mà không cần kiểm tra xem mỗi tham chiếu trong chuỗi có hợp lệ không. Điều này giúp mã của bạn trở nên sạch hơn và an toàn hơn.
Cách sử dụng như sau:
let user = {}; // an empty object
console.log(user?.address?.street); // outputs: undefined, instead of throwing an error
3. Spread/Rest Operators (Toán tử spread/rest)
Toán tử spread (…) trong JavaScript được sử dụng để phân tán các phần tử của một mảng hoặc đối tượng. Toán tử rest cũng là (…) và được sử dụng để thu thập các phần tử còn lại vào một mảng. Cả hai toán tử này giúp mã ngắn gọn và dễ đọc hơn:
let arr1 = [1, 2, 3];
let arr2 = [...arr1, 4, 5]; // outputs: [1, 2, 3, 4, 5]
Với toán tử rest:
let [first, ...rest] = [1, 2, 3, 4, 5];
console.log(first); // outputs: 1
console.log(rest); // outputs: [2, 3, 4, 5]
4. Short-circuit Evaluation (Đánh giá ngắn mạch)
Đánh giá ngắn mạch trong JavaScript sử dụng các toán tử logic (&& và ||) để tạo ra mã ngắn gọn hơn. Nó có thể được sử dụng để thiết lập giá trị mặc định, kiểm tra đối tượng trước khi sử dụng và nhiều hơn nữa:
let name = user && user.name; let port = serverPort || 3000;
5. Template Literals (Chuỗi mẫu)
Template literals cung cấp một cách dễ dàng để chèn các biến và biểu thức vào chuỗi. Chúng được bao quanh bởi dấu backtick thay vì dấu nháy:
let name = "John";
console.log(`Hello, ${name}!`); // outputs: Hello, John!
6. Arrow Functions (Hàm mũi tên)
Arrow functions cung cấp một cú pháp ngắn gọn hơn để viết biểu thức hàm. Chúng rất phù hợp cho các hàm không phải phương thức và không có this
, arguments
, super
, hoặc new.target
:
let hello = () => "Hello World";
console.log(hello()); // outputs: Hello World
7. Nullish Coalescing Operator (Toán tử hợp nhất null)
Toán tử hợp nhất null (??) là một toán tử logic trả về toán hạng bên phải khi toán hạng bên trái là null hoặc undefined, và trả về toán hạng bên trái nếu không phải null hoặc undefined:
let name = null ?? "default name";
console.log(name); // outputs: default name
8. Ternary Operator (Toán tử ba ngôi)
Toán tử ba ngôi là cách nhanh hơn để viết các câu lệnh if-else đơn giản. Cú pháp là: condition ? value_if_true : value_if_false
:
let age = 15;
let type = age >= 18 ? "Adult" : "Minor";
console.log(type); // outputs: Minor
9. Array Methods (map, reduce, filter)
JavaScript cung cấp các phương thức mảng mạnh mẽ như map, reduce, và filter. Chúng hiệu quả và thanh lịch hơn so với các vòng lặp truyền thống:
let numbers = [1, 2, 3, 4, 5];
let doubled = numbers.map(n => n * 2); // outputs: [2, 4, 6, 8, 10]
10. Async/Await
Async/Await giúp mã bất đồng bộ trông và hành xử giống như mã đồng bộ. Đây là một cú pháp tiện lợi cho các promises, giúp mã bất đồng bộ dễ hiểu và dễ viết hơn:
async function fetchUser() { let response = await fetch('https://api.github.com/users'); let data = await response.json(); console.log(data);
}
fetchUser();
Vậy là hết rồi! Hy vọng bạn đã tìm thấy những mẹo JavaScript này hữu ích. Chúc bạn lập trình vui vẻ!