Gernar
JavaScript: язык и типы

Какие знаешь типы данных в 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

Примитивы передаются по значению, то есть создается копия. Объекты передаются по ссылке, то есть изменения внутри функции влияют на оригинал.

Содержание