My cheat-shiet Javascript
Lượn lờ vài vòng platform công nghệ, chợt thấy một post về ìm ru & level úp JS skills hay quá nên đem về coi như của hồi môn (¬‿¬ )
1. Destructuring Magic
Cái j mà unpack values from arrays or objects, thực tế mình ít dùng cái này.
const person = { name: 'Alice’, age: 30 }; const { name, age } = person; console.log(name); // Output: Alice console.log(age); // Output: 30 #Mình toàn gọi person.name luôn chứ chả dùng cái trên. // cái này thì tiện nè. const [year, month, day] = date console.log(year) // 2014 console.log(month) // 17 console.log(day) // 07
2. Spread
Giúp create copies of arrays and merge objects. Hmm, cái này nhìn hịn mà mình ít sài vcl.
const originalArray = [1, 2, 3]; const clonedArray = [...originalArray]; console.log(clonedArray); // Output: [1, 2, 3] // Merging const obj1 = { a: 1, b: 2 }; const obj2 = { b: 3, c: 4 }; const merged = { ...obj1, ...obj2 }; console.log(merged); // Output: { a: 1, b: 3, c: 4 } // Thời ngày xưa... // Create an Array const tools = ['hammer', 'screwdriver'] const otherTools = ['wrench', 'saw'] // Concatenate tools and otherTools together const allTools = tools.concat(otherTools) console.log(allTools); //["hammer","screwdriver","wrench","saw"]
3. map()
Nghe nói là vũ khí bí mật giúp tranforming data, thấy cũng tiện mà trước giờ mình cũng ít sài, chắc tại mình gà qá.
const numbers = [1, 2, 3]; const squared = numbers.map(num => num * num); console.log(squared); // Output: [1, 4, 9]
4. Short-circuit
Sử dụng toán tử
&&
and||
rút gọn. Ez.const name = user.name || 'Guest'; console.log(name); // Output: Guest
5. Arrow function
Nhìn thì khá ngon, cũng muốn dùng cơ mà nhìn vào source biết đéo được dùng rồi.
const greet = name => `Hello, ${name}!`; console.log(greet(’Alice’)); // Output: Hello, Alice!
6. Optional chaining (?.
)
Giúp tránh mấy trường hợp lỗi khi xử lý các thuộc tính lồng nhau. Ngon, mà mình thường quên nên không sử dụng mấy.
const user = { info: { name: 'Alice' } }; console.log(user.info?.age); // Output: undefined
7. Cool console tricks
Nghe là biết cool rồi, cơ mà cũng ít sài. Chắc phải setting snippet chứ chả cool tí nào khi phải viết tay :))
const users = [{ name: 'Alice' }, { name: 'Bob' }]; console.table(users); console.groupCollapsed(’Details’); console.log(’Name: Alice’); console.log(’Age: 30’); console.groupEnd();
8. Fetch with async/await
Cái này ai cũng biết mà thôi viết vào cho post nó dài chút.
async function fetchData() { try { const response = await fetch('url'); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } } fetchData();
9. Closures Unleashed
Chưa hình dung sẽ dùng trong tình huống nào.
function createCounter() { let count = 0; return function () { count++; console.log(count); }; } const counter = createCounter(); counter(); // Output: 1 counter(); // Output: 2
10. Memoization for Speed
Méo hiểu là nó đang làm cái gì. để hồi test thử.
function fibonacci(n, memo = {}) { if (n in memo) return memo[n]; if (n <= 2) return 1; memo[n] = fibonacci(n - 1, memo) + fibonacci(n - 2, memo); return memo[n]; } console.log(fibonacci(10)); // Output: 55
11. Hail the Intersection Observer: Effortless Scroll Effects
Chắc là ngon, chưa test qua.
Use the Intersection Observer API for lazy loading and scroll animations
const observer = new IntersectionObserver(entries => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('fade-in'); observer.unobserve(entry.target); } }); }); const elements = document.querySelectorAll('.animate'); elements.forEach(element => observer.observe(element));
12. Reduce + spread
Cũng tiện
const array1 = [1, 2, 3, 4]; // 0 + 1 + 2 + 3 + 4 const initialValue = 0; function sum(...ary) { return array1.reduce( (accumulator, currentValue) => accumulator + currentValue, initialValue, ); } sum(...array1) // 10