Интервью-вопрос
Что ответить про метод previews в JavaScript
В стандартном JavaScript метода previews нет. На интервью вам важно спокойно заметить неточность, уточнить контекст и при необходимости объяснить preventDefault().
- Добавлен
- Редакция
Подготовьте короткий ответ и пару деталей на случай уточняющих вопросов.
Мини-квиз
Проверка перед разбором
Несколько быстрых вопросов перед разбором. Так проще поймать места, которые только кажутся понятными.
Вопрос 1 из 40 правильно
Разбор
Разобраться, а не зазубрить
Дальше разбираем суть, типичные уточнения и места, где легко сказать лишнее или перепутать термины.
Базовая идея
На такой вопрос лучше не отвечать так, будто previews() точно существует в стандартном API. В JavaScript есть много методов у разных объектов, но общего стандартного метода previews(), который должен знать frontend-разработчик, нет.
Хорошая формулировка для интервью:
В стандартном JavaScript я не знаю метода previews. Возможно, речь про preventDefault() или про кастомный метод конкретной библиотеки. Я бы уточнил объект вызова и контекст.
Такой ответ показывает две вещи: вы не выдумываете API и умеете работать с неточной формулировкой вопроса.
Как выбрать безопасный ответ
Если вопрос задан устно, в нем может быть опечатка, оговорка или проверка на внимательность. Вам не нужно спорить с формулировкой. Нужно спокойно отделить стандартный язык от возможного проектного кода.
Как действовать в ответе
Скажите, что стандартного метода previews нет.Аккуратно предложите preventDefault() как вероятный вариант.Уточните объект вызова и проверьте локальное определение или документацию библиотеки.Разведите 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() только из-за похожего звучания.
Безопасная проверка:
- Посмотрите объект перед вызовом:
user.previews(),editor.previews(),event.previews()могут означать разные вещи. - Найдите определение метода через поиск по проекту.
- Проверьте типы, если проект на TypeScript.
- Проверьте документацию библиотеки, если объект пришел извне.
Если метода нет, вызов закончится ошибкой вида TypeError: object.previews is not a function. Для frontend это может означать сломанный клик, неработающую форму или белый экран, если ошибка не обработана.
Практический вывод
На интервью отвечайте коротко и точно. Не пытайтесь угадать несуществующий метод. Сначала скажите, что в стандартном JavaScript previews() нет, затем предложите вероятный вариант: preventDefault().
Если вас просят продолжить, объясните разницу между тремя вещами: отменой действия по умолчанию, всплытием события и кастомным методом проекта. Именно эта граница показывает, что вы понимаете DOM events, а не просто помните похожее название.
Частые ошибки
Где обычно ошибаются
Проверьте формулировки, которые звучат уверенно, но на интервью быстро выдают пробелы.
- 1
Выдумывать поведение метода
Если вы уверенно описываетеpreviews()как стандартный метод, это легко проверить уточняющим вопросом. Безопаснее сказать, что такого метода в стандартном API нет, и попросить контекст вызова. - 2
Не отличать опечатку от API
Иногда вопрос специально проверяет, заметите ли вы неверное имя. Если сразу начать рассказывать проpreventDefault()без оговорки, звучит так, будто вы не проверяете точность терминов. Сначала назовите проблему в имени, потом предложите вероятную замену. - 3
Путать отмену действия и всплытие
preventDefault()не мешает событию дойти до родительских обработчиков. Если в UI нужно не только отменить переход, но и не закрывать родительский dropdown, может понадобиться ещеstopPropagation(). Эти решения лучше объяснять отдельно. - 4
Полагаться на return false
В обработчике, добавленном черезaddEventListener,return falseне отменит действие по умолчанию. Из-за этого форма может отправиться, ссылка может открыть страницу, а вы покажете устаревшую модель событий. Используйте явный вызовevent.preventDefault().
Follow-up
Что могут спросить дальше
Короткие ответы на вопросы, которыми проверяют понимание DOM events и аккуратность с неточными API.
Живые ответы
Видео с похожим вопросом
Если найдем публичные интервью с таким вопросом, добавим их сюда. Их удобно смотреть после теории, чтобы свериться с живыми ответами.
Пока видео нет. Когда появятся подходящие публичные интервью, добавим их в этот блок, чтобы можно было сравнить разбор с тем, как отвечают реальные кандидаты.
Что делает метод bind 😎
Метод bind создает новую функцию с заранее привязанным this и, при необходимости, частью аргументов. Разбираем, чем он отличается от call и apply, где помогает во frontend-коде и какие ловушки есть со стрелочными функциями.
Что делает метод map в JavaScript 😎
Метод map создает новый массив из результатов callback для существующих элементов массива. Разбираем, когда его использовать, чем он отличается от forEach и где появляются ловушки с async и разреженными массивами.