Что такое декларативность

Ответ

Декларативность — это подход, при котором код описывает что нужно сделать, а не как это сделать. В отличие от императивного стиля, где явно указываются шаги выполнения, декларативный код фокусируется на результате.

Пример:

// Императивный стиль (как)
const numbers = [1, 2, 3];
const doubled = [];
for (let i = 0; i < numbers.length; i++) {
  doubled.push(numbers[i] * 2);
}

// Декларативный стиль (что)
const doubled = numbers.map(n => n * 2);

В React декларативность проявляется через JSX:

<button onClick={handleClick} disabled={isLoading}>
  Submit
</button>

Преимущества:

  • Читаемость
  • Меньше ошибок
  • Проще рефакторить
  • Лучше масштабируется

Ответ 18+ 🔞

Ну слушай, вот есть такая штука — декларативность. Это когда ты не расписываешь, как тебе чай заварить, шаг за шагом, а просто орешь на всю квартиру: «Хочу чай, блядь!». И тебе приносят. Вот и в коде так же: ты описываешь, что тебе надо, а не как это под пиво и селедку делать.

А есть другой подход, императивный. Это как если бы ты сам лез в шкаф, искал заварку, грел чайник, считал минуты, а потом еще и чашку мыл. Куча шагов, в которых можно накосячить на каждом повороте.

Смотри, вот тебе живой пример, чтобы не быть голословным:

// Императивный стиль (расписываешь КАК, как последний олух)
const numbers = [1, 2, 3];
const doubled = [];
for (let i = 0; i < numbers.length; i++) {
  doubled.push(numbers[i] * 2);
}

// Декларативный стиль (говоришь ЧТО, и все, пиздец)
const doubled = numbers.map(n => n * 2);

Видишь разницу? В первом случае ты — микро-менеджер, который стоит над каждым чихом. Во втором — начальник, который просто сказал «удвой», и система сама разобралась, ёпта.

В React это вообще цветет пиздатым цветом. Ты не пишешь кучу инструкций, чтобы создать кнопку, повесить слушатель и проверить состояние. Ты просто... объявляешь её, как есть!

<button onClick={handleClick} disabled={isLoading}>
  Submit
</button>

Смотришь на это и сразу ясно: кнопка, по клику — функция, и если грузится (isLoading), то она выключена. Красота, в рот меня чих-пых! Никаких document.createElement, addEventListener и прочей императивной ебалы.

И зачем это всё? А вот зачем, умник:

  • Читаемость. Глянул — и понял, что происходит. Не надо разгадывать ребус, где переменная i на 17-й итерации цикла обнулилась.
  • Меньше ошибок. Чем меньше шагов ты расписываешь своими кривыми ручонками, тем меньше шансов где-то налажать.
  • Проще рефакторить. Захотел поменять логику — меняешь в одном месте, где объявлено «что», а не бегаешь по десяти местам, где описано «как».
  • Лучше масштабируется. Когда проект растет, как грибы после дождя, этот подход не превращает код в непролазные дебри, где сам чёрт ногу сломит.

Вот и вся магия. Не усложняй, говори прямо, что хочешь, и система тебя поймет. Если, конечно, она не совсем конченая.