Какие знаешь типы данных в JavaScript
Разбор вопроса «Какие знаешь типы данных в JavaScript» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.
Вопрос
Какие знаешь типы данных в JavaScript
Профессия
Frontend Developer
Что хочет услышать интервьюер
Интервьюер хочет убедиться, что кандидат понимает основные типы данных в JavaScript, их различия и особенности. Также важно, чтобы кандидат мог объяснить, как работают примитивы и объекты, и как их отличать.
Ключевые тезисы
- В JavaScript есть 8 типов данных, разделяющихся на примитивные и объекты.
- Примитивные типы: number, string, boolean, null, undefined, symbol, bigint.
- Объекты включают в себя массивы, функции, даты и другие структуры данных.
- Отличие примитивов от объектов: примитивы неизменяемы и передаются по значению, а объекты — по ссылке.
- Тип данных можно проверить с помощью оператора typeof, но он имеет особенности (например, typeof null возвращает 'object').
Подробный ответ
В JavaScript существует 8 типов данных, которые делятся на две основные категории: примитивные и объекты. Примитивные типы данных включают number (числа), string (строки), boolean (логические значения), null (отсутствие значения), undefined (неопределённое значение), symbol (уникальные идентификаторы) и bigint (большие целые числа). Объекты — это более сложные структуры данных, которые включают массивы, функции, даты и другие объекты. Примитивные типы данных неизменяемы и передаются по значению, то есть при присваивании или передаче в функцию создаётся копия значения. Объекты, напротив, передаются по ссылке, и изменения в объекте отражаются во всех переменных, которые ссылаются на этот объект. Для определения типа данных используется оператор typeof, однако он имеет свои особенности. Например, typeof null возвращает 'object', что исторически связано с ранними версиями JavaScript. Для более точного определения типа данных можно использовать другие методы, такие как Array.isArray() для проверки массива или Object.prototype.toString.call() для определения конкретного типа объекта.
Практические примеры
Пример 1
Использование typeof для проверки типов данных.
let num = 42;
let str = 'Hello';
let bool = true;
let obj = {};
console.log(typeof num); // 'number'
console.log(typeof str); // 'string'
console.log(typeof bool); // 'boolean'
console.log(typeof obj); // 'object'
console.log(typeof null); // 'object'Пример 2
Проверка, является ли переменная массивом.
let arr = [1, 2, 3];
console.log(Array.isArray(arr)); // true
console.log(typeof arr); // 'object'Пример 3
Использование Symbol для создания уникальных идентификаторов.
let id1 = Symbol('id');
let id2 = Symbol('id');
console.log(id1 === id2); // falseЧастые ошибки
- Ошибка: Использование typeof для проверки массива. typeof возвращает 'object' для массивов, что может ввести в заблуждение. Правильно использовать Array.isArray().
- Ошибка: Путаница между null и undefined. null используется для обозначения отсутствия значения, а undefined — для обозначения неинициализированной переменной.
Связанные темы
- Типизация в JavaScript: динамическая и слабая типизация.
- Приведение типов: явное и неявное преобразование типов данных.
- Прототипы и наследование в JavaScript.
- Работа с объектами: методы Object, создание и клонирование объектов.
Follow-up вопросы
Что возвращает typeof для null и почему?
Уровень: basic
typeof null возвращает 'object'. Это историческая ошибка в языке, которая сохраняется для совместимости.
В чем разница между null и undefined?
Уровень: basic
undefined означает, что переменная объявлена, но не инициализирована. null — это явное указание на отсутствие значения.
Как проверить, является ли переменная массивом?
Уровень: intermediate
Для проверки можно использовать Array.isArray(), так как typeof возвращает 'object' для массивов.
Что такое Symbol и для чего он используется?
Уровень: intermediate
Symbol — это уникальный и неизменяемый тип данных, часто используемый для создания уникальных ключей в объектах.
Как работают примитивы и объекты при передаче в функции?
Уровень: advanced
Примитивы передаются по значению, то есть создается копия. Объекты передаются по ссылке, то есть изменения внутри функции влияют на оригинал.
Какое значение хранит переменная var до ее объявления
Разбор вопроса «Какое значение хранит переменная var до ее объявления» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.
В чем разница между null и undefined
Разбор вопроса «В чем разница между null и undefined» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.