confirm()

confirm() - это встроенная функция браузера, которая показывает модальное окно с вопросом и двумя кнопками: ОК и Отмена.

С ее помощью можно спросить пользователя, согласен он с действием или нет. Например: удалить запись, перейти дальше, подтвердить выбор или продолжить выполнение кода.

Что такое confirm()

confirm() похож на alert(), потому что тоже показывает модальное окно. Но в отличие от alert(), он не просто выводит сообщение, а ждет выбора пользователя.

confirm('Вы хотите продолжить?');

После выполнения этого кода браузер покажет окно с текстом и двумя кнопками. Пользователь может нажать ОК или Отмена.

Сам по себе вызов confirm() уже покажет окно, но чаще всего результат нужно сохранить или сразу проверить в условии.

Синтаксис

Общая запись выглядит так:

confirm(message);

message - это текст вопроса, который увидит пользователь.

Простой пример:

confirm('Вы изучаете JavaScript?');

Текст вопроса записывается в кавычках. В конце инструкции, как обычно, можно поставить точку с запятой.

Что возвращает confirm()

Главная особенность confirm() - он возвращает логическое значение.

  • если пользователь нажал ОК, вернется true;
  • если пользователь нажал Отмена, вернется false.

Проверим это через консоль:

let answer = confirm('Продолжить обучение?');

console.log(answer);

Если нажать ОК, в консоли будет:

true

Если нажать Отмена, в консоли будет:

false

Это удобно, потому что дальше результат можно использовать в условиях.

confirm() в условии

Чаще всего confirm() используют вместе с if. Если пользователь согласился, выполняется один код. Если отказался - другой.

if (confirm('Вы хотите продолжить?')) {
  alert('Отлично, продолжаем!');
} else {
  alert('Хорошо, остановимся здесь.');
}

В этом примере confirm() сразу стоит внутри условия.

Если пользователь нажмет ОК, условие получит true и выполнится первый блок кода.

Если пользователь нажмет Отмена, условие получит false и выполнится блок else.

Сохранить результат в переменную

Результат confirm() можно сначала записать в переменную, а потом использовать.

let isReady = confirm('Готовы начать урок?');

if (isReady) {
  console.log('Пользователь готов');
} else {
  console.log('Пользователь пока не готов');
}

Такой вариант удобнее, когда результат нужно использовать несколько раз или когда хочется сделать код понятнее.

Переменную можно назвать по смыслу: isReady, isConfirmed, isAdult, hasAccess. Такие имена обычно читаются как вопрос и хорошо подходят для значений true или false.

confirm(), alert() и prompt()

Эти три функции похожи тем, что показывают модальные окна браузера. Но задачи у них разные.

alert() просто показывает сообщение:

alert('Привет!');

prompt() показывает поле ввода и возвращает текст пользователя:

let name = prompt('Введите имя');

confirm() задает вопрос и возвращает true или false:

let answer = confirm('Вы согласны?');

Если нужно просто сообщить - подойдет alert(). Если нужно получить текст - prompt(). Если нужно получить согласие или отказ - confirm().

Частые ошибки

1. Ожидание получить текст

let answer = confirm('Введите ваше имя');

confirm() не дает пользователю поле для ввода. Он возвращает только true или false. Если нужен текст, используйте prompt().

2. Результат не сохранен

confirm('Вы согласны?');

console.log(answer);

В этом примере переменной answer нет. Правильно:

let answer = confirm('Вы согласны?');

console.log(answer);

3. Сравнение с текстом

let answer = confirm('Продолжить?');

if (answer === 'ОК') {
  alert('Продолжаем');
}

Такой код не сработает как ожидается, потому что confirm() возвращает не строку ‘ОК’, а значение true или false.

Правильно:

let answer = confirm('Продолжить?');

if (answer) {
  alert('Продолжаем');
}

4. Неправильно написано имя функции

Confirm('Вы согласны?');

JavaScript чувствителен к регистру. Правильно:

confirm('Вы согласны?');

Что дальше

confirm() помогает получить простой ответ пользователя: да или нет. Для первых программ этого достаточно, чтобы научиться принимать решение в коде.

Дальше разберем typeof - оператор, который помогает узнать тип значения в JavaScript.