HTML Diff
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>содержит секцию &lt;head&gt; страниц. Используя подключения файлов и условную конструкцию подставьте уникальное описание в файл<em>head.pug</em>. Если значение переменной title пустое, то выдаётся заранее подготовленный текст.</p>
23 <p>Внутри файлов<em>index.pug</em>и<em>product.pug</em>существует переменная title с уникальным описанием страницы. Файл<em>head.pug</em>содержит секцию &lt;head&gt; страниц. Используя подключения файлов и условную конструкцию подставьте уникальное описание в файл<em>head.pug</em>. Если значение переменной title пустое, то выдаётся заранее подготовленный текст.</p>
24 <p>Пример страницы:</p>
24 <p>Пример страницы:</p>
25  
25