Да, console.log() является побочным эффектом (side effect). Любая операция, которая влияет на внешнюю среду или зависит от неё, считается побочным эффектом. console.log() выводит информацию в консоль, изменяя состояние внешней среды, поэтому это побочный эффект.
// Побочный эффект — вывод в консоль
function greet(name) {
console.log('Привет, ' + name); // side effect
return name;
}
greet('Иван'); // Выводит: 'Привет, Иван'console.log() — как посыльный, который бегает из дома в дом и передаёт сообщения. Он влияет на “внешний мир” (консоль), поэтому является побочным эффектом! 📢
Побочный эффект (side effect) — это когда функция делает что-то кроме возврата значения. То есть влияет на внешнюю среду или зависит от неё:
function add(a, b) {
console.log('Складываю числа'); // побочный эффект
return a + b;
}
const result = add(2, 3); // Выводит: 'Складываю числа'// Изменение переменной вне функции
let counter = 0;
function increment() {
counter++; // побочный эффект
return counter;
}
// Изменение DOM
function updatePage(title) {
document.title = title; // побочный эффект
return title;
}
// HTTP запросы
async function fetchData() {
const response = await fetch('/api/data'); // побочный эффект
return response.json();
}// Всегда возвращает одинаковый результат для одинаковых аргументов
function pureAdd(a, b) {
return a + b; // Нет побочных эффектов
}
pureAdd(2, 3); // Всегда 5// Может возвращать разные результаты
let x = 1;
function impureAdd(a) {
console.log('Вычисляю'); // побочный эффект
return a + x; // зависит от внешней переменной
}
impureAdd(2); // 3
x = 5;
impureAdd(2); // 7 (другой результат!)function processUser(user) {
console.log('Обрабатываю пользователя:', user.name); // Для отладки
// ... логика обработки
return user;
}// Сохранение данных
function saveToLocalStorage(key, value) {
localStorage.setItem(key, JSON.stringify(value)); // побочный эффект
return true;
}
// Отправка данных на сервер
async function sendToServer(data) {
const response = await fetch('/api/save', {
method: 'POST',
body: JSON.stringify(data)
}); // побочный эффект
return response.ok;
}// ❌ Ошибка — думать, что это чистая функция
function logAndReturn(value) {
console.log(value); // побочный эффект!
return value;
}
// ✅ Правильно — понимать, что это функция с побочным эффектом// ❌ Сложно тестировать
function bad(name) {
console.log('Привет, ' + name);
return name.length;
}
// ✅ Лучше — разделить логику и побочные эффекты
function good(name) {
const length = name.length; // чистая логика
console.log('Привет, ' + name); // побочный эффект
return length;
}Понимание побочных эффектов помогает писать более предсказуемый код и лучше понимать, как работают функции! 💪
Хотите больше статей для подготовки к собеседованиям? Подписывайтесь на EasyAdvice, добавляйте сайт в закладки и совершенствуйтесь каждый день 💪