Перейти к содержимому
На этой странице

Типы и преобразования JavaScript

Все темы React Developer

Подтемы:

Какие есть типы данных в JavaScript?

Типы данных в JavaScript:

  1. Примитивные типы:

    • Number: Числовые значения, включая целые и дробные числа.

    • String: Строки текста.

    • Boolean: Логические значения (true и false).

    • Undefined: Значение переменной, которой не присвоено значение.

    • Null: Специальное значение, представляющее отсутствие какого-либо значения.

    • Symbol: Уникальные и неизменяемые идентификаторы.

    • BigInt: Числа произвольной точности, используемые для работы с очень большими целыми числами.

  2. Объектный тип Object и примеры его разновидностей:

    • Object: Коллекция свойств и методов.

    • Array: Упорядоченные коллекции значений.

    • Function: Объекты, которые можно вызывать как функции.

    • Date: Объекты для работы с датами и временем.

    • RegExp: Регулярные выражения для поиска и замены в строках.

    • Map: Коллекция ключ-значение.

    • Set: Коллекция уникальных значений.


В чем разница между null и undefined?

Разница между null и undefined в JavaScript:

  1. undefined:

    • Значение: Переменная объявлена, но не инициализирована.

    • Тип: undefined.

    • Примеры использования:

      let a;
      console.log(a); // undefined
  2. null:

    • Значение: Явное указание на отсутствие значения или “ничто”.

    • null является единственным значением примитивного типа Null. typeof null возвращает строку “object” из-за исторической особенности JavaScript.

    • Примеры использования:

      let b = null;
      console.log(b); // null

Основные различия:

  • Назначение: undefined означает, что переменная не инициализирована, а null указывает на намеренное отсутствие значения.

  • null является единственным значением примитивного типа Null. typeof null возвращает строку “object” из-за исторической особенности JavaScript.


В чем разница между операторами "==" и "==="?

Разница между "==" и "===" в JavaScript

  1. Оператор “==” (нестрогое равенство):

    • Сравнивает значения после приведения типов.

    • Пример:

      console.log(2 == '2'); // true (число и строка приводятся к одному типу)
      console.log(null == undefined); // true
  2. Оператор “===” (строгое равенство):

    • Сравнивает значения без приведения типов.

    • Пример:

      console.log(2 === '2'); // false (разные типы: число и строка)
      console.log(null === undefined); // false

Основные различия:

  • Приведение типов: “==” приводит операнды к одному типу перед сравнением, а “===” не приводит и сравнивает типы и значения напрямую.

  • Использование: “===” предпочтительнее использовать для точных сравнений, чтобы избежать непредвиденных результатов из-за приведения типов.


Почему результатом сравнения двух похожих объектов является false?

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

Пример:

let obj1 = { a: 1 };
let obj2 = { a: 1 };

console.log(obj1 === obj2); // false
console.log(obj1 == obj2); // false

Объяснение:

  • Сравнение по ссылке: obj1 и obj2 содержат одинаковые данные, но находятся в разных местах памяти. Сравнение этих объектов будет false, так как их ссылки разные.

  • Сравнение примитивов: Для примитивных типов (числа, строки, логические значения и т. д.) сравнение выполняется по значению, а не по ссылке.


Какие значения в JS являются ложными?

В JavaScript следующие значения считаются ложными (falsy):

  1. false
  2. 0
  3. -0

  4. 0n (BigInt ноль)

  5. "" (пустая строка)

  6. null
  7. undefined
  8. NaN

Пример:

if (!false) console.log("Falsy"); // Falsy
if (!0) console.log("Falsy"); // Falsy
if (!-0) console.log("Falsy"); // Falsy
if (!0n) console.log("Falsy"); // Falsy
if (!"") console.log("Falsy"); // Falsy
if (!null) console.log("Falsy"); // Falsy
if (!undefined) console.log("Falsy"); // Falsy
if (!NaN) console.log("Falsy"); // Falsy

Эти значения считаются ложными в контексте логических операций и условий.


Как проверить, является ли значение ложным?

Для проверки, является ли значение ложным (falsy), можно использовать логическое отрицание или приведение к логическому типу.

Способы проверки:

  1. Логическое отрицание:

    • Примените одно отрицание: !value равно true для falsy-значения. Двойное отрицание !!value преобразует значение в Boolean и даёт false для falsy.

    • Пример:

      let value = 0;
      if (!value) {
          console.log("The value is falsy");
      }
  2. Приведение к логическому типу:

    • Использовать конструкцию Boolean() для явного приведения значения к логическому типу.

    • Пример:

      let value = "";
      if (Boolean(value) === false) {
          console.log("The value is falsy");
      }

Примеры:

let value1 = null;
console.log(!value1); // true - значение ложное

let value2 = "hello";
console.log(Boolean(value2)); // true - значение истинное

let value3 = undefined;
if (!value3) {
  console.log("The value is falsy"); // Вывод: The value is falsy
}

Является ли использование унарного плюса (оператор “+”) самым быстрым способом преобразования строки в число?

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

Основные характеристики:

  1. Унарный плюс:

    • Преобразует строку в число.

    • Пример:

      let str = "123";
      let num = +str;
      console.log(num); // 123
  2. Альтернативные методы:

    • parseInt(): Преобразует строку в целое число.

      let num = parseInt("123", 10); // 123
    • parseFloat(): Преобразует строку в число с плавающей запятой.

      let num = parseFloat("123.45"); // 123.45
    • Number(): Преобразует строку в число.

      let num = Number("123"); // 123

Преимущества унарного плюса:

  • Семантика: + и Number требуют числового представления всей строки. parseInt и parseFloat разбирают допустимый числовой префикс: например, Number(“12px”) даёт NaN, а parseInt(“12px”, 10) даёт 12.

  • Краткость: Унарный плюс — это краткий и лаконичный способ преобразования строки в число.

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

Смотри записи интервью, узнай, какие вопросы задают и как отвечают кандидаты.

Вопросы и ответы

Не нашли ответ? Напишите мне в чат. Я делаю Шпаргалку и сам отвечаю на сообщения. Расскажите, что не работает или чего вам не хватает. Может, смогу сразу взять это в работу.

Откуда взяты вопросы?

Из реальных собеседований. Основой подборки стал опыт Вадима Новосёлова: он проходил интервью и записывал вопросы. Подробнее о материалах.

Насколько эти вопросы актуальны?

Эти вопросы встречались нам на реальных собеседованиях в 2025 году. Мы регулярно проходим собеседования и пополняем подборку новыми вопросами. Основы профессии и ключевые технологии остаются востребованными годами, а детали конкретных инструментов и версий стоит сверять с текущей документацией.

На какой уровень рассчитана подборка?

Мы проходили собеседования на вакансии уровня Middle+, а иногда и на Senior-позиции. Вопросы из этих интервью вошли в подборку. Направления работы: React-разработчик, Frontend-разработчик. Глубина обсуждения зависит от вакансии: будь готов объяснить основную идею, привести практический пример и разобрать ограничения и альтернативы решения.

Этот вопрос точно будет на моём собеседовании?

Гарантии нет: набор вопросов зависит от компании, задач команды, уровня вакансии и самого интервьюера. Эти вопросы уже встречались на реальных собеседованиях, но на твоём интервью ту же тему могут проверить другой формулировкой, практической задачей или обсуждением твоего опыта. Используй подборку, чтобы разобраться в теме: объясняй идею своими словами, приводи примеры и готовься обсудить ограничения и альтернативы решения. Так будет проще ответить и на знакомый вопрос, и на неожиданные уточнения.