Logo
Книга для начинающих
ВходРегистрация
/
Программирование
/
Курс JavaScript
/

Условная конструкция (if)

JavaScript: Условная конструкция (if)

Логические выражения позволяют проверять разные условия, но сами по себе они лишь возвращают true или false. Чтобы программа могла выполнять разные действия в зависимости от результата, в JavaScript есть специальная конструкция if.

if (5 > 3) {
  console.log('Yes, it is true');
}

Здесь строка 'Yes, it is true' напечатается, потому что условие 5 > 3 истинно.

┌───────────┐
│ условие?  │
└─────┬─────┘
  true │
      ↓
┌───────────┐
│ тело if   │
└───────────┘

Синтаксис

После if в круглых скобках записывается условие, а тело — в фигурных скобках:

if (условие) {
  // блок выполняется, если условие true
}

Условие — это любое выражение, которое приводится к true или false.

Блоки кода

Всё, что находится внутри фигурных скобок {}, относится к телу if. Код после блока выполняется в любом случае:

if (10 === 10) {
  console.log('First');
  console.log('Second');
}

console.log('Goodbye!');

Здесь напечатаются First и Second, потому что условие выполнилось. А Goodbye! напечатается всегда, так как эта строка уже за пределами блока. Принцип такой же, как и в определении функций.

Использование if внутри функции

Рассмотрим функцию, которая определяет тип переданного предложения. Если оно оканчивается знаком вопроса, функция вернёт 'question', иначе — 'normal':

const getTypeOfSentence = (sentence) => {
  if (sentence.endsWith('?')) {
    return 'question';
  }
  return 'normal';
};

console.log(getTypeOfSentence('Hodor'));  // => normal
console.log(getTypeOfSentence('Hodor?')); // => question

Здесь используются сразу два return. Если условие внутри if выполняется, срабатывает return 'question' и функция завершается. Если условие не выполняется, управление переходит на следующую строку с return 'normal'.

Таким образом, у функции есть несколько возможных точек выхода. Это частая практика: в зависимости от условий функция может завершаться по-разному.

Несмотря на то что функция getTypeOfSentence использует if, она возвращает строки, а значит предикатом не является. В качестве предиката рассмотрим функцию, которая проверяет, достаточно ли денег для покупки:

const hasEnoughMoney = (balance, price) => {
  if (balance >= price) {
    return true;
  }
  return false;
};

console.log(hasEnoughMoney(100, 50)); // => true
console.log(hasEnoughMoney(30, 50));  // => false

if и логические выражения

Функцию hasEnoughMoney мы написали через if. Но в таком виде она могла бы обойтись и без него, потому что результат сравнения сам по себе уже является логическим выражением:

const hasEnoughMoney = (balance, price) => balance >= price;

В простых случаях лучше сразу возвращать такое выражение. if нужен там, где внутри блока выполняются дополнительные действия помимо возврата результата. Чем сложнее программы, тем чаще такие ситуации будут встречаться.

Задание

Напишите функцию guessNumber(guess), которая:

  • возвращает 'You win!', если guess === 42
  • возвращает 'Try again!' в противном случае
guessNumber(42); // => 'You win!'
guessNumber(7);  // => 'Try again!'
Коммерческий опыт и Трудоустройство

Полезное

  • if

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
/
Программирование
/
Курс JavaScript
/

Условная конструкция (if)

JavaScript: Условная конструкция (if)

Логические выражения позволяют проверять разные условия, но сами по себе они лишь возвращают true или false. Чтобы программа могла выполнять разные действия в зависимости от результата, в JavaScript есть специальная конструкция if.

if (5 > 3) {
  console.log('Yes, it is true');
}

Здесь строка 'Yes, it is true' напечатается, потому что условие 5 > 3 истинно.

┌───────────┐
│ условие?  │
└─────┬─────┘
  true │
      ↓
┌───────────┐
│ тело if   │
└───────────┘

Синтаксис

После if в круглых скобках записывается условие, а тело — в фигурных скобках:

if (условие) {
  // блок выполняется, если условие true
}

Условие — это любое выражение, которое приводится к true или false.

Блоки кода

Всё, что находится внутри фигурных скобок {}, относится к телу if. Код после блока выполняется в любом случае:

if (10 === 10) {
  console.log('First');
  console.log('Second');
}

console.log('Goodbye!');

Здесь напечатаются First и Second, потому что условие выполнилось. А Goodbye! напечатается всегда, так как эта строка уже за пределами блока. Принцип такой же, как и в определении функций.

Использование if внутри функции

Рассмотрим функцию, которая определяет тип переданного предложения. Если оно оканчивается знаком вопроса, функция вернёт 'question', иначе — 'normal':

const getTypeOfSentence = (sentence) => {
  if (sentence.endsWith('?')) {
    return 'question';
  }
  return 'normal';
};

console.log(getTypeOfSentence('Hodor'));  // => normal
console.log(getTypeOfSentence('Hodor?')); // => question

Здесь используются сразу два return. Если условие внутри if выполняется, срабатывает return 'question' и функция завершается. Если условие не выполняется, управление переходит на следующую строку с return 'normal'.

Таким образом, у функции есть несколько возможных точек выхода. Это частая практика: в зависимости от условий функция может завершаться по-разному.

Несмотря на то что функция getTypeOfSentence использует if, она возвращает строки, а значит предикатом не является. В качестве предиката рассмотрим функцию, которая проверяет, достаточно ли денег для покупки:

const hasEnoughMoney = (balance, price) => {
  if (balance >= price) {
    return true;
  }
  return false;
};

console.log(hasEnoughMoney(100, 50)); // => true
console.log(hasEnoughMoney(30, 50));  // => false

if и логические выражения

Функцию hasEnoughMoney мы написали через if. Но в таком виде она могла бы обойтись и без него, потому что результат сравнения сам по себе уже является логическим выражением:

const hasEnoughMoney = (balance, price) => balance >= price;

В простых случаях лучше сразу возвращать такое выражение. if нужен там, где внутри блока выполняются дополнительные действия помимо возврата результата. Чем сложнее программы, тем чаще такие ситуации будут встречаться.

Задание

Напишите функцию guessNumber(guess), которая:

  • возвращает 'You win!', если guess === 42
  • возвращает 'Try again!' в противном случае
guessNumber(42); // => 'You win!'
guessNumber(7);  // => 'Try again!'
Коммерческий опыт и Трудоустройство

Полезное

  • if

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
← ПредыдущийСледующий →
← ПредыдущийСледующий →
← ПредыдущийСледующий →

Ваше упражнение проверяется по этим тестам

import { expect, test } from 'vitest';
import f from './index.js';

test('if', () => {
  expect(f(100500)).toBe('Try again!');
  expect(f(42)).toBe('You win!');
});
← ПредыдущийСледующий →

Решение учителя откроется через:

20:00

waiting_clock
← ПредыдущийСледующий →