PassFront
  1. PassFront
  2. База знаний
  3. Асинхронность и Event Loop

console.log() - синхронная или асинхронная операция?

Асинхронность и Event Loop

`console.log()` — синхронная операция в JavaScript: вызов выполняется сразу, в момент, когда до него доходит выполнение. Но вывод в консоль браузера может отображаться с нюансами.

Синхронность вызова

console.log выполняется синхронно — он не возвращает промис и не откладывается:

console.log('1');
console.log('2');
console.log('3');
// 1, 2, 3 — по порядку, синхронно

Нюанс — «ленивое» вычисление объектов

При логировании объекта консоль браузера может показать его состояние на момент раскрытия, а не вызова (объект логируется по ссылке):

const obj = { count: 0 };
console.log(obj);  // в консоли раскроете позже — увидите count: 1
obj.count = 1;

Это не про асинхронность console.log, а про то, что консоль хранит ссылку и показывает объект «живым». Примитивы логируются по значению — без этого эффекта.

В Node.js

console.log пишет в stdout; при записи в файл — синхронно; в терминал и пайпы поведение зависит от платформы (на POSIX вывод в терминал синхронный, на Windows — асинхронный). Но с точки зрения кода вызов синхронный.

Коротко для собеседования

console.log() синхронный — выполняется сразу по порядку. Нюанс: при логировании объекта консоль браузера хранит ссылку и может показать его состояние на момент раскрытия (кажется «асинхронным»), но это про ссылку, а не про отложенность вызова. Примитивы логируются по значению.

Другие вопросы раздела