Use let for block-scoped variables, const for constants, avoid var. Understand function scope, block scope, and closure concepts for proper variable management.
Function declarations, expressions, arrow functions, IIFE (Immediately Invoked Function Expressions). Arrow functions don't bind 'this' - useful for callbacks.
Promises handle async operations with .then() and .catch(). Async/await provides cleaner syntax. Use Promise.all() for parallel operations, Promise.race() for first completion.
map() transforms arrays, filter() selects elements, reduce() accumulates values, forEach() iterates, find() locates elements, some()/every() test conditions.
Destructuring for extracting values, spread operator (...) for copying/merging, template literals for strings, default parameters, rest parameters, classes, modules.