Gernar
Frontend DeveloperJavaScript, DOM events

Интервью-вопрос

Что ответить про метод previews в JavaScript

В стандартном JavaScript метода previews нет. На интервью вам важно спокойно заметить неточность, уточнить контекст и при необходимости объяснить preventDefault().

Добавлен
Редакция

Подготовьте короткий ответ и пару деталей на случай уточняющих вопросов.

🐰0
🥚0

Мини-квиз

Проверка перед разбором

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

Вопрос 1 из 40 правильно

Что ответить, если вас спрашивают про метод previews?

Вы сейчас отвечаете точно и не выдумываете несуществующий API.

Варианты ответа

Разбор

Разобраться, а не зазубрить

Дальше разбираем суть, типичные уточнения и места, где легко сказать лишнее или перепутать термины.

Базовая идея

На такой вопрос лучше не отвечать так, будто previews() точно существует в стандартном API. В JavaScript есть много методов у разных объектов, но общего стандартного метода previews(), который должен знать frontend-разработчик, нет.

Хорошая формулировка для интервью:

В стандартном JavaScript я не знаю метода previews. Возможно, речь про preventDefault() или про кастомный метод конкретной библиотеки. Я бы уточнил объект вызова и контекст.

Такой ответ показывает две вещи: вы не выдумываете API и умеете работать с неточной формулировкой вопроса.

Как выбрать безопасный ответ

Если вопрос задан устно, в нем может быть опечатка, оговорка или проверка на внимательность. Вам не нужно спорить с формулировкой. Нужно спокойно отделить стандартный язык от возможного проектного кода.

Как действовать в ответе

1Вопрос звучит как про стандартный JavaScript?
Скажите, что стандартного метода previews нет.
2Похоже на опечатку или оговорку?
Аккуратно предложите preventDefault() как вероятный вариант.
3Метод встречается в коде проекта?
Уточните объект вызова и проверьте локальное определение или документацию библиотеки.
4Нужно показать практическое понимание событий?
Разведите preventDefault(), stopPropagation() и return false.

Если имели в виду preventDefault()

preventDefault() вызывают у объекта события. Метод отменяет действие браузера по умолчанию, но не отменяет сам факт события и не останавливает его всплытие.

const form = document.querySelector("form");

form.addEventListener("submit", (event) => {
  event.preventDefault();

  // Здесь можно проверить поля, отправить fetch-запрос
  // или показать ошибку без перезагрузки страницы.
  console.log("Форма не отправлена стандартным способом");
});

Практический вывод: если вы забыли preventDefault() в обработчике формы, страница может перезагрузиться, состояние UI потеряется, а ваш асинхронный код не успеет нормально завершиться. Пользователь может отправить форму повторно, увидеть сброшенные поля или не получить сообщение об ошибке.

Чем это отличается от stopPropagation()

stopPropagation() решает другую задачу. Он не отменяет действие браузера, а не дает событию идти дальше к родителям.

const link = document.querySelector("a");

link.addEventListener("click", (event) => {
  event.preventDefault(); // не переходим по href
  event.stopPropagation(); // не вызываем обработчики родителей
});

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

Почему return false опасен как ответ

Плохой ответ:

Можно просто вернуть false, это заменит preventDefault() и stopPropagation().

В обработчиках, добавленных через addEventListener, это не работает как универсальная замена. Возврат значения из функции не является явным контрактом отмены действия браузера. В форме это может привести к обычной отправке и перезагрузке страницы вместо контролируемой валидации, loading-состояния и обработки ошибки.

Лучше сказать так:

В современном DOM API я явно вызываю event.preventDefault() для отмены стандартного действия и event.stopPropagation() только если нужно остановить всплытие.

Если previews оказался кастомным методом

Метод с таким именем может существовать в конкретном проекте. Его могли добавить в класс, объект сервиса, тестовый helper или библиотеку. Поэтому не меняйте его автоматически на preventDefault() только из-за похожего звучания.

Безопасная проверка:

  1. Посмотрите объект перед вызовом: user.previews(), editor.previews(), event.previews() могут означать разные вещи.
  2. Найдите определение метода через поиск по проекту.
  3. Проверьте типы, если проект на TypeScript.
  4. Проверьте документацию библиотеки, если объект пришел извне.

Если метода нет, вызов закончится ошибкой вида TypeError: object.previews is not a function. Для frontend это может означать сломанный клик, неработающую форму или белый экран, если ошибка не обработана.

Практический вывод

На интервью отвечайте коротко и точно. Не пытайтесь угадать несуществующий метод. Сначала скажите, что в стандартном JavaScript previews() нет, затем предложите вероятный вариант: preventDefault().

Если вас просят продолжить, объясните разницу между тремя вещами: отменой действия по умолчанию, всплытием события и кастомным методом проекта. Именно эта граница показывает, что вы понимаете DOM events, а не просто помните похожее название.

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

Где обычно ошибаются

Проверьте формулировки, которые звучат уверенно, но на интервью быстро выдают пробелы.

  1. 1

    Выдумывать поведение метода

    Если вы уверенно описываете previews() как стандартный метод, это легко проверить уточняющим вопросом. Безопаснее сказать, что такого метода в стандартном API нет, и попросить контекст вызова.
  2. 2

    Не отличать опечатку от API

    Иногда вопрос специально проверяет, заметите ли вы неверное имя. Если сразу начать рассказывать про preventDefault() без оговорки, звучит так, будто вы не проверяете точность терминов. Сначала назовите проблему в имени, потом предложите вероятную замену.
  3. 3

    Путать отмену действия и всплытие

    preventDefault() не мешает событию дойти до родительских обработчиков. Если в UI нужно не только отменить переход, но и не закрывать родительский dropdown, может понадобиться еще stopPropagation(). Эти решения лучше объяснять отдельно.
  4. 4

    Полагаться на return false

    В обработчике, добавленном через addEventListener, return false не отменит действие по умолчанию. Из-за этого форма может отправиться, ссылка может открыть страницу, а вы покажете устаревшую модель событий. Используйте явный вызов event.preventDefault().

Follow-up

Что могут спросить дальше

Короткие ответы на вопросы, которыми проверяют понимание DOM events и аккуратность с неточными API.

Живые ответы

Видео с похожим вопросом

Если найдем публичные интервью с таким вопросом, добавим их сюда. Их удобно смотреть после теории, чтобы свериться с живыми ответами.

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

Содержание