Результаты: 'object', true, true, false, false и объект со свойством '[object Object]': '1'. Последнее происходит из-за строкового преобразования ключа-объекта.
Какой вывод получит консоль (пример 108)
Результаты: 'object', true, true, false, false и объект со свойством '[object Object]': '1'. Последнее происходит из-за строкового преобразования ключа-объекта.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, какой результат будет выведен в консоль после выполнения следующего JavaScript‑кода.
console.log(typeof null);
const arrowFn = () => {};
console.log(arrowFn instanceof Object);
console.log(1 == "1");
console.log(1 === "1");
console.log({ a: 1 } == { a: 1 });
const obj = {};
const key = {};
obj[key] = '1';
console.log(obj);
Ответ
Результаты: 'object', true, true, false, false и объект со свойством '[object Object]': '1'. Последнее происходит из-за строкового преобразования ключа-объекта.
typeof null исторически возвращает 'object', хотя null не является обычным объектом. Стрелочная функция — объект с цепочкой прототипов, ведущей к Object.prototype в этом же окружении.
Нестрогое 1 == '1' приводит типы и даёт true; строгое сравнение — false. Два литерала {a:1} создают разные ссылки, поэтому даже == возвращает false. Обычный объект как ключ obj[key] преобразуется в '[object Object]'; для ключей по ссылке используйте Map.