How do you optimize JavaScript performance?

Optimizations include reducing DOM manipulation (batch updates), using lazy loading for images and modules, minimizing reflows, avoiding memory leaks, and optimizing loops (e.g., forEach vs for loops). Minifying and bundling code, caching data, and using async techniques like async/await or Promise.all also improve performance.