Ответ
JavaScript — однопоточный и синхронный язык, но с возможностью асинхронного выполнения кода через механизмы Event Loop, Web APIs (в браузере) и Callback Queue.
Пример синхронного кода:
console.log('1');
console.log('2'); // Выполняется строго после '1'
Пример асинхронного кода:
console.log('1');
setTimeout(() => console.log('2'), 0); // Попадает в очередь и выполнится после синхронного кода
console.log('3');
// Результат: 1, 3, 2
Асинхронность достигается через колбэки, промисы и async/await, но сам движок JS обрабатывает код синхронно.