JavaScript is a single-threaded, asynchronous programming language. Event loop helps JavaScript with asynchronous programming. Developers use callbacks for async programming.