Императивный стиль подразумевает (как), здесь мы описываем много деталей и нам важно (как) мы это сделаем.
Например я хочу доехать до магазина, (как) я это сделаю: Я должен выйти из дома, закрыть его, сесть в машину, завести, тронуться туда и туда, (после еще многих операций) я приехал.
Я опустил много деталей, но суть именно в том, что мы создаем инструкцию с подробными действиями.
Например при нажатии на кнопку, меняем на другой кнопке цвет, это реализация метода toggle
из объекта 'classList'.
Конечно в идеале так же описать бы подробно и методы add,contains,remove
это было бы прям императивно так императивно, но для сути и это пойдет.
Важно понимать, что в императивном стиле тоже можно автоматизировать отдельные задачи, что уже не будет так сильно отличаться от декларативного стиля. Как в этом примере:
// у нас четкие инструкции как это сделать.
btns[0].addEventListener('click', () => {
if (!btns[2].classList.contains('red')) { // если кнопка не имеет класса
btns[2].classList.add('red'); // тогда мы этот класс вешаем
} else {
btns[2].classList.remove('red'); // иначе если класс есть, мы его удаляем
}
});
Или например обычное прибавление:
// Здесь у нас уже прям императивный стиль, без доп функций.
function addOn(arr) {
let result = 0;
for (let i = 0; i < arr.length; i++) {
result += arr[i];
}
return result;
}
console.log(addOn([5, 5])); // 10
Императивные языки:
Декларативный стиль подразумевает (что), в данном случае нам важно (что) мы делаем, а не (как). Многие детали опускаются за счет использования интерфейсов и готовых решений, которые в себе все равно используют императивный стиль, поэтому нужно понимать, что декларативный стиль имеет в себе опредлённый слой императивного подхода.
Тот же пример что был выше с декларативным стилем(что): Вызваем такси и едем до магазина.
Теперь меняем класс у кнопки с методом toggle:
// используем просто метод и не важно как он выполнит работу
// главное что в итоге будет.
btns[0].addEventListener('click', () => {
btns[2].classList.toggle('red');
});
Так же реализуем прибавление всего в массиве в сумму.
function addOn(arr) {
return arr.reduce((prev, current) => prev + current, 0)
}
console.log(addOn([5, 5])); // 10
Декларативные языки:
Например язык разметки html
это декларативный язык.
Нам главное что получим, а не как. Не важно как тег h1
делает заголовок, важно, что мы получим этот загловок.
<body>
<div>
<h1> Всем пока </h1>
<p> всем привет ребята </p>
</div>
</body>
Есть такие языки которые в себе используют и то и то, как можно было догадаться выше, это javaScript
, так же например python
и C#
.