## 1. ES6+ Features ### a. Arrow Functions ```javascript const add = (a, b) => a + b; console.log(add(2, 3)); // 5 ``` ### b. Destructuring ```javascript const person = { name: 'Nam', age: 25 }; const { name, age } = person; console.log(name); // Nam ``` ### c. Spread Operator ```javascript const arr1 = [1, 2, 3]; const arr2 = [...arr1, 4, 5]; console.log(arr2); // [1, 2, 3, 4, 5] ``` ### d. Rest Operator ```javascript const sum = (...numbers) => numbers.reduce((acc, curr) => acc + curr, 0); console.log(sum(1, 2, 3, 4)); // 10 ``` ## 2. Hàm built-in ```javascript # Nhân đôi các số const numbers = [1, 2, 3, 4]; const doubled = numbers.map(num => num * 2); console.log(doubled); // [2, 4, 6, 8] ``` ```javascript const names = ['An', 'Bình', 'Chi']; const greetings = names.map(name => `Hello, ${name}`); console.log(greetings); // ["Hello, An", "Hello, Bình", "Hello, Chi"] ``` ```javascript # Lấy tên từ danh sách đối tượng const users = [ { id: 1, name: 'Nam' }, { id: 2, name: 'Lan' } ]; const names = users.map(user => user.name); console.log(names); // ['Nam', 'Lan'] ``` ```javascript # Lọc người có tuổi >= 18 const people = [ { name: 'An', age: 17 }, { name: 'Bình', age: 20 }, { name: 'Chi', age: 16 }, ]; const adults = people.filter(person => person.age >= 18); console.log(adults); ``` ### Truthy and Falsy Falsy : Giá trị phổ biến: false, 0, "", null, undefined , NaN ```javascript // 1. false if (!false) { console.log("1. false là falsy"); } // 2. 0 if (!0) { console.log("2. 0 là falsy"); } // 5. "" (Chuỗi rỗng) if (!"") { console.log("5. Chuỗi rỗng là falsy"); } // 6. null if (!null) { console.log("6. null là falsy"); } // 7. undefined if (!undefined) { console.log("7. undefined là falsy"); } // (8.) NaN – thường cũng được liệt kê, nhưng nếu bạn tính đủ 7 thì NaN là cái thay thế -0 hoặc 0n if (!NaN) { console.log("8. NaN là falsy"); } ``` ### Toán tử logic ```javascript && (AND) – Trả về giá trị thứ hai nếu vế trái là truthy const isLoggedIn = true; const message = isLoggedIn && "Chào mừng bạn!"; console.log(message); // "Chào mừng bạn!" const isOnline = false; console.log(isOnline && "Bạn đang online"); // false ``` ```javascript || (OR) – Trả về giá trị đầu tiên truthy const username = ""; const nameToShow = username || "Khách"; console.log(nameToShow); // "Khách" const age = 0; const ageToShow = age || 18; console.log(ageToShow); // 18 (vì 0 là falsy) ``` ```javascript # Toán tử Ba ngôi ? : – Thay thế cho if...else điều_kiện ? giá_trị_nếu_đúng : giá_trị_nếu_sai; const isDarkMode = true; const theme = isDarkMode ? "Giao diện tối" : "Giao diện sáng"; console.log(theme); // "Giao diện tối" ```