0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>При разработке продукта редко весь код пишется последовательно, без ответвлений. Случаются ситуации, когда, в зависимости от неких настроек или действий пользователя, должен выполняться тот или иной участок кода.</p>
1
<p>При разработке продукта редко весь код пишется последовательно, без ответвлений. Случаются ситуации, когда, в зависимости от неких настроек или действий пользователя, должен выполняться тот или иной участок кода.</p>
2
<p>Для создания таких ветвлений в программировании используются<em>условные конструкции</em>или<em>условные выражения</em>. Что можно принять за ветвление? Представьте, что пользователь заходит на страницу профиля. В зависимости от того, залогинен он или нет выполнится следующее действие:</p>
2
<p>Для создания таких ветвлений в программировании используются<em>условные конструкции</em>или<em>условные выражения</em>. Что можно принять за ветвление? Представьте, что пользователь заходит на страницу профиля. В зависимости от того, залогинен он или нет выполнится следующее действие:</p>
3
<ul><li><strong>Если пользователь залогинен</strong>: вывести страницу профиля.</li>
3
<ul><li><strong>Если пользователь залогинен</strong>: вывести страницу профиля.</li>
4
<li><strong>Если пользователь не залогинен</strong>: вывести страницу регистрации.</li>
4
<li><strong>Если пользователь не залогинен</strong>: вывести страницу регистрации.</li>
5
</ul><p>Как оформить это в виде кода? Если вы уже знакомы с программированием, то знаете о чём пойдёт речь. Необходимо определить:</p>
5
</ul><p>Как оформить это в виде кода? Если вы уже знакомы с программированием, то знаете о чём пойдёт речь. Необходимо определить:</p>
6
<ol><li>Условную конструкцию.</li>
6
<ol><li>Условную конструкцию.</li>
7
<li>Условие, по которому происходит ветвление.</li>
7
<li>Условие, по которому происходит ветвление.</li>
8
<li>Блоки кода для условий.</li>
8
<li>Блоки кода для условий.</li>
9
</ol><p>В этом списке появилось новое понятие "условие". Что же это такое? Условие - любое выражение, которое можно свести либо к истинности, либо ко лжи. Например, выражение 2 + 2 = 4 истинно, а 2 + 5 = 1 - нет. В зависимости от этого условия выполнится соответствующий блок кода.</p>
9
</ol><p>В этом списке появилось новое понятие "условие". Что же это такое? Условие - любое выражение, которое можно свести либо к истинности, либо ко лжи. Например, выражение 2 + 2 = 4 истинно, а 2 + 5 = 1 - нет. В зависимости от этого условия выполнится соответствующий блок кода.</p>
10
<p>Результат, если переменная isLogin равна true:</p>
10
<p>Результат, если переменная isLogin равна true:</p>
11
<p>Результат, если переменная isLogin равна false:</p>
11
<p>Результат, если переменная isLogin равна false:</p>
12
<p>Так как конструкция if проверяет истинность true или ложность false выражения, то в прошлом примере можно убрать сравнение с true. Такой код будет работать точно так же:</p>
12
<p>Так как конструкция if проверяет истинность true или ложность false выражения, то в прошлом примере можно убрать сравнение с true. Такой код будет работать точно так же:</p>
13
<p>Разберём ещё один пример. Объект с пользователем содержит несколько полей: имя, фамилия, логин. Если имя и фамилия заданы, то вывести их, иначе вывести логин.</p>
13
<p>Разберём ещё один пример. Объект с пользователем содержит несколько полей: имя, фамилия, логин. Если имя и фамилия заданы, то вывести их, иначе вывести логин.</p>
14
<p><strong>Важно:</strong>обратите внимание на объявление объекта. Символ - и сам объект находятся на разных строчках. Таким образом можно записывать многострочный JavaScript код. Это полезно при создании объектов, функций, циклов и так далее.</p>
14
<p><strong>Важно:</strong>обратите внимание на объявление объекта. Символ - и сам объект находятся на разных строчках. Таким образом можно записывать многострочный JavaScript код. Это полезно при создании объектов, функций, циклов и так далее.</p>
15
<p>В прошлых примерах основной упор был на существование того или иного объекта. Условные конструкции могут проверять абсолютно любое выражение:</p>
15
<p>В прошлых примерах основной упор был на существование того или иного объекта. Условные конструкции могут проверять абсолютно любое выражение:</p>
16
<p>Во время разработки продукта может возникнуть ситуация, когда нужно проверить не истинность, а ложность высказывания. Это может быть проверка пользователя на администратора при заходе на страницу управления. В этом случае нужно проверить, является ли пользователь администратором или нет. Если пользователь не обладает нужными правами, то показать ему сообщение об ошибке. Решить эту задачу можно через отрицание в условии:</p>
16
<p>Во время разработки продукта может возникнуть ситуация, когда нужно проверить не истинность, а ложность высказывания. Это может быть проверка пользователя на администратора при заходе на страницу управления. В этом случае нужно проверить, является ли пользователь администратором или нет. Если пользователь не обладает нужными правами, то показать ему сообщение об ошибке. Решить эту задачу можно через отрицание в условии:</p>
17
<p>Такое сравнение может быть избыточным, так как конструкция условного выражения подразумевает проверку на истинность, а не ложность. Есть два пути сделать код чище:</p>
17
<p>Такое сравнение может быть избыточным, так как конструкция условного выражения подразумевает проверку на истинность, а не ложность. Есть два пути сделать код чище:</p>
18
<ol><li>Использовать оператор логического отрицания !. В этом случае вычисляется результат выражения, а потом его значение инвертируется. Если было true, то станет false и наоборот. Конструкция примет следующий вид: if !isAdmin. Так как переменная isAdmin равна false, то при отрицании значение преобразуется в true.</li>
18
<ol><li>Использовать оператор логического отрицания !. В этом случае вычисляется результат выражения, а потом его значение инвертируется. Если было true, то станет false и наоборот. Конструкция примет следующий вид: if !isAdmin. Так как переменная isAdmin равна false, то при отрицании значение преобразуется в true.</li>
19
<li>Использование конструкции unless. В отличие от if, unless проверяет<em>ложность</em>условия.</li>
19
<li>Использование конструкции unless. В отличие от if, unless проверяет<em>ложность</em>условия.</li>
20
</ol><h2>Дополнительное задание</h2>
20
</ol><h2>Дополнительное задание</h2>
21
<p>Проект имеет структуру файлов:</p>
21
<p>Проект имеет структуру файлов:</p>
22
<p>├── include/ │ ├── head.pug ├── index.pug ├── product.pug</p>
22
<p>├── include/ │ ├── head.pug ├── index.pug ├── product.pug</p>
23
<p>Внутри файлов<em>index.pug</em>и<em>product.pug</em>существует переменная title с уникальным описанием страницы. Файл<em>head.pug</em>содержит секцию <head> страниц. Используя подключения файлов и условную конструкцию подставьте уникальное описание в файл<em>head.pug</em>. Если значение переменной title пустое, то выдаётся заранее подготовленный текст.</p>
23
<p>Внутри файлов<em>index.pug</em>и<em>product.pug</em>существует переменная title с уникальным описанием страницы. Файл<em>head.pug</em>содержит секцию <head> страниц. Используя подключения файлов и условную конструкцию подставьте уникальное описание в файл<em>head.pug</em>. Если значение переменной title пустое, то выдаётся заранее подготовленный текст.</p>
24
<p>Пример страницы:</p>
24
<p>Пример страницы:</p>
25
25