> Какие ключи могут быть в объекте и в Map в JavaScript (JavaScript)
Уровень: middle · Роль: frontend · Категория: Технические вопросы
Компании: Molecula
Стек: JavaScript
> Пример ответа
В JavaScript объекты и Map имеют разные ограничения на типы ключей.
Ключи объекта могут быть только строками (String) или символами (Symbol). Любое другое значение (число, булево, объект, null, undefined) автоматически приводится к строке. Например:
JAVASCRIPTconst obj = {};obj[1] = 'one'; // ключ становится строкой '1'obj[true] = 'yes'; // ключ становится строкой 'true'obj[{a: 1}] = 'obj'; // ключ становится строкой '[object Object]'console.log(obj); // { '1': 'one', 'true': 'yes', '[object Object]': 'obj' }
Ключи Map могут быть любыми значениями - примитивами (числа, строки, булевы, null, undefined, символы) и объектами (включая функции, массивы, другие Map). Приведение типов не происходит, ключи сравниваются по строгому равенству (===), за исключением NaN (считается равным самому себе в Map).
JAVASCRIPTconst map = new Map();map.set(1, 'one');map.set('1', 'string one'); // это другой ключ, не число 1map.set({}, 'obj');map.set(NaN, 'nan');console.log(map.size); // 4
Ключевые отличия:
- В объекте ключи всегда строки или символы (другие типы преобразуются).
- В Map ключи могут быть любого типа, включая объекты, без приведения.
- Map сохраняет порядок вставки ключей, объект (с ES2015) - только для строковых ключей в определённом порядке.
> Похожие задачи по frontend
Можно ли забиндить контекст функции в JavaScript и как это сделать
Как обратиться к объекту и пройти по цепочке прототипов в JavaScript
Что такое иммутабельность в JavaScript
Что происходит при запуске бесконечной рекурсивной функции с console.log в браузере
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью