Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Специализация

Python Backend Developer

Java Backend Developer

Node.js Backend Developer

Golang Backend Developer

React Frontend Developer

Посмотреть все

Выберите навыки

React

React

JavaScript

JavaScript

Git

Git

Redux

Redux

Webpack

Webpack

Посмотреть все

Сложность

1-3

4-6

7-8

9-10

Рейтинг вопросов

1

2

3

4

5

Подпишись на React Developer в телеграм

Вопросы React Frontend Developer


Почему не рекомендуется использовать конструкторы, такие как new String, в JavaScript?

Использование конструкторов, таких как new String или new Number, не рекомендуется, так как они создают объект вместо примитива. Объекты ведут себя иначе, чем примитивные типы данных, и могут приводить к неожиданным результатам в сравнении и других операциях. Примитивные значения (например, строки или числа) следует использовать напрямую без конструкторов.

Подробнее

Как реализовать глубокое копирование объекта без использования JSON.stringify и StructuredClone? Какие сложности могут возникнуть?

Глубокое копирование можно реализовать с помощью рекурсивной функции, которая вручную создает новый объект или массив и копирует все его свойства. Для каждого свойства, если оно является объектом, функция вызывает сама себя. Основные сложности: обработка циклических ссылок (когда объект ссылается сам на себя), копирование специальных объектов (как Date, Map, Set) и поддержка различных типов данных.

Подробнее

В чем разница между Object.assign и копированием через JSON.stringify / JSON.parse?

Object.assign делает поверхностное копирование объекта.
JSON.stringify / JSON.parse выполняет глубокое копирование, но с серьёзными ограничениями.
При использовании JSON теряются функции, undefined, Symbol и специальные типы данных.
Также JSON не умеет работать с циклическими ссылками.

Подробнее

Какие проблемы есть у JSON.stringify при копировании объектов?

JSON.stringify не умеет работать со всеми типами данных JavaScript.
Он удаляет функции, undefined, Symbol и методы объектов.
Также он не поддерживает циклические ссылки и специальные объекты вроде Date или Map.
Из-за этого результат копирования может отличаться от исходного объекта.

Подробнее

Что такое structuredClone и чем он отличается от JSON.stringify?

structuredClone — это встроенный API для глубокого копирования объектов.
Он корректно копирует многие типы данных, которые не поддерживает JSON.stringify.
structuredClone умеет работать с циклическими ссылками.
При этом он сохраняет структуру данных без преобразования в строку.

Подробнее

От какого объекта в JavaScript в итоге наследуются все типы?

Откуда у строк появляются методы вроде toString()?

Почему 5.toString() не работает, но 5..toString() работает?

В каком порядке вызываются valueOf и toString?

Как получить ключи объекта по типу значений (например, только string)?

  • Рейтинг:

    4

  • Сложность:

    6

Практически все объекты в JavaScript в итоге наследуются от Object.prototype. Это “базовый” объект в прототипной цепочке, где находятся общие методы (toString, hasOwnProperty и т.д.). Сам Object.prototype обычно наследуется от null, то есть это конец цепочки. Примитивы напрямую не объекты, но при обращении к методам часто временно “оборачиваются” в объект-обёртку.

Подробнее
  • Рейтинг:

    5

  • Сложность:

    6

Строки — это примитивы, но при обращении к методу JavaScript временно оборачивает строку в объект String. Этот объект содержит методы, определённые в String.prototype. После вызова метода временный объект сразу удаляется. Поэтому методы у строк выглядят как “родные”, хотя сами строки объектами не являются.

Подробнее
  • Рейтинг:

    4

  • Сложность:

    7

5.toString() не работает, потому что JavaScript воспринимает точку как часть числового литерала. В результате парсер “ждёт” дробную часть числа, а не вызов метода. Вариант 5..toString() работает, потому что первая точка завершает число, а вторая используется для доступа к методу. После этого число временно оборачивается в объект Number, и метод успешно вызывается.

Подробнее
  • Рейтинг:

    5

  • Сложность:

    7

При приведении объекта к примитиву JavaScript сначала пытается вызвать valueOf, а если он не возвращает примитив, вызывает toString. Этот порядок применяется по умолчанию для числового контекста. Если результат всё ещё не примитив, выбрасывается ошибка. Поведение строго описано в спецификации.

Подробнее
  • Рейтинг:

    4

  • Сложность:

    7

В TypeScript можно получить ключи объекта, значения которых имеют определённый тип, используя условные типы и key remapping. Создаётся тип, который перебирает ключи и проверяет, соответствует ли тип значения заданному. Если да — ключ остаётся, иначе — исключается. Это позволяет строго типизировать функции, работающие с подмножеством свойств объекта.
Подробнее
  • Рейтинг:

    2

  • Сложность:

    7

  • Рейтинг:

    1

  • Сложность:

    9

  • Рейтинг:

    4

  • Сложность:

    5

  • Рейтинг:

    4

  • Сложность:

    6

  • Рейтинг:

    3

  • Сложность:

    7