Почему функции обратного вызова позволяют нам делать вещи асинхронно в Javascript?

Я читал, что обратные вызовы делают JavaScript асинхронно. Но я не уверен, что понял объяснение. Это то, что я получаю

Функции обратного вызова позволяют нам делать вещи асинхронно, поскольку они гарантируют, что строки до обратного вызова полностью завершены перед загрузкой следующей строки.

Это правда? Спасибо