Типы и преобразования JavaScript
Подтемы:
Какие есть типы данных в JavaScript?
Типы данных в JavaScript:
-
Примитивные типы:
-
Number: Числовые значения, включая целые и дробные числа. -
String: Строки текста. -
Boolean: Логические значения (true и false). -
Undefined: Значение переменной, которой не присвоено значение. -
Null: Специальное значение, представляющее отсутствие какого-либо значения. -
Symbol: Уникальные и неизменяемые идентификаторы. -
BigInt: Числа произвольной точности, используемые для работы с очень большими целыми числами.
-
-
Объектный тип Object и примеры его разновидностей:
-
Object: Коллекция свойств и методов. -
Array: Упорядоченные коллекции значений. -
Function: Объекты, которые можно вызывать как функции. -
Date: Объекты для работы с датами и временем. -
RegExp: Регулярные выражения для поиска и замены в строках. -
Map: Коллекция ключ-значение. -
Set: Коллекция уникальных значений.
-
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- Мок-интервью по Frontend-разработке · 2:11–3:55Мок-собеседование · Совместный разбор
Кандидат перечисляет типы JavaScript, разделяет примитивы и объекты и уточняет, что массивы и функции относятся к объектам.
В чем разница между null и undefined?
Разница между null и undefined в JavaScript:
-
undefined:-
Значение: Переменная объявлена, но не инициализирована.
-
Тип:
undefined. -
Примеры использования:
let a; console.log(a); // undefined
-
-
null:-
Значение: Явное указание на отсутствие значения или “ничто”.
-
null является единственным значением примитивного типа Null. typeof null возвращает строку “object” из-за исторической особенности JavaScript.
-
Примеры использования:
let b = null; console.log(b); // null
-
Основные различия:
-
Назначение:
undefinedозначает, что переменная не инициализирована, аnullуказывает на намеренное отсутствие значения. -
null является единственным значением примитивного типа Null. typeof null возвращает строку “object” из-за исторической особенности JavaScript.
Ссылки для изучения
В чем разница между операторами "==" и "==="?
Разница между "==" и "===" в JavaScript
-
Оператор “==” (нестрогое равенство):
-
Сравнивает значения после приведения типов.
-
Пример:
console.log(2 == '2'); // true (число и строка приводятся к одному типу) console.log(null == undefined); // true
-
-
Оператор “===” (строгое равенство):
-
Сравнивает значения без приведения типов.
-
Пример:
console.log(2 === '2'); // false (разные типы: число и строка) console.log(null === undefined); // false
-
Основные различия:
-
Приведение типов: “==” приводит операнды к одному типу перед сравнением, а “===” не приводит и сравнивает типы и значения напрямую.
-
Использование: “===” предпочтительнее использовать для точных сравнений, чтобы избежать непредвиденных результатов из-за приведения типов.
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- Собеседование Junior Frontend разработчика в 17 лет · 27:06–28:12Мок-собеседование · Объяснение интервьюера
Интервьюер объясняет приведение типов при нестрогом сравнении и почему оно может давать неожиданные результаты.
Почему результатом сравнения двух похожих объектов является false?
В JavaScript объекты сравниваются по ссылке, а не по значению. Даже если два объекта имеют одинаковые свойства и значения, они будут считаться разными, если ссылаются на разные места в памяти.
Пример:
let obj1 = { a: 1 };
let obj2 = { a: 1 };
console.log(obj1 === obj2); // false
console.log(obj1 == obj2); // false
Объяснение:
-
Сравнение по ссылке:
obj1иobj2содержат одинаковые данные, но находятся в разных местах памяти. Сравнение этих объектов будетfalse, так как их ссылки разные. -
Сравнение примитивов: Для примитивных типов (числа, строки, логические значения и т. д.) сравнение выполняется по значению, а не по ссылке.
Ссылки для изучения
Примеры хороших ответов из реальных собеседований
- Собеседование Junior Frontend разработчика в 17 лет · 28:59–29:44Мок-собеседование · Совместный разбор
Интервьюер объясняет, почему два отдельно созданных объекта остаются разными значениями, даже если имеют одинаковую структуру.
Какие значения в JS являются ложными?
В JavaScript следующие значения считаются ложными (falsy):
-
false -
0 -
-0
-
0n(BigIntноль) -
""(пустая строка) -
null -
undefined -
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), можно использовать логическое отрицание или приведение к логическому типу.
Способы проверки:
-
Логическое отрицание:
-
Примените одно отрицание: !value равно true для falsy-значения. Двойное отрицание !!value преобразует значение в Boolean и даёт false для falsy.
-
Пример:
let value = 0; if (!value) { console.log("The value is falsy"); }
-
-
Приведение к логическому типу:
-
Использовать конструкцию
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
}
Ссылки для изучения
Является ли использование унарного плюса (оператор “+”) самым быстрым способом преобразования строки в число?
Нет универсальной гарантии, что унарный плюс быстрее других способов. Выбирайте преобразование по нужной семантике, а значимые различия производительности измеряйте в целевой среде.
Основные характеристики:
-
Унарный плюс:
-
Преобразует строку в число.
-
Пример:
let str = "123"; let num = +str; console.log(num); // 123
-
-
Альтернативные методы:
-
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.
-
Краткость: Унарный плюс — это краткий и лаконичный способ преобразования строки в число.
Ссылки для изучения







