Ответ
ООП основано на объектах, инкапсуляции, наследовании и полиморфизме. Данные и методы объединяются в классы, работа идёт через изменение состояния объектов.
ФП использует чистые функции, избегает изменяемого состояния и побочных эффектов. Акцент на преобразовании данных через композицию функций.
Пример ООП:
class User {
constructor(name) {
this.name = name;
}
greet() {
return `Hello, ${this.name}!`;
}
}
Пример ФП:
const greet = (name) => `Hello, ${name}!`;
const exclaim = (str) => `${str}!!!`;
const greetLoudly = (name) => exclaim(greet(name));
Ключевые различия:
- ООП: состояние + поведение в объектах
- ФП: данные + функции разделены
- ООП: мутация состояния
- ФП: иммутабельность
- ООП: императивный стиль
- ФП: декларативный стиль