Cразу хочется поделить его на блоки, ведь вопросы проверяют разные темы:
Первый и второй вопрос — на типы данных.
1️⃣ Что выведет:
console.log([] === []);
Массив в JS - это ссылочный тип, в реальности сравнение читается как: 0xde17.. === 0xf22d..., поэтому ответ - false.
p.s. но гораздо интереснее задача:
console.log([] == ![]);
Как думаете, что будет и почему?)
2️⃣ Что произойдёт?
let str = 'somestr'
console.log(str[1])
str[1] = 'h'
console.log(str[1])
Ответ: JavaScript позволяет читать символы из массива, но изменять их нельзя, потому что строка — примитив, а примитивы неизменяемые(immutable). Поэтому ответ - в обоих логах будет "o".
Третий вопрос на знание конструкций языка и методов.
3️⃣ Что это:
?. // Optional Chaining или "Оператор опциональной последовательности": позволяет безопасно обращаться к свойствам, если объект может быть null или undefined
... // Spread / Rest оператор
?? // Nullish Coalescing или "Оператор нулевого слияния": Возвращает правое значение только если левое null или undefined.
&&= // Логическое И, тоже самое что a && (a = b)
`${foo}` // Template literal, "шаблонные литералы"
structuredClone(bar) // Глубокое клонирование объекта
someArray.at() // это метод для получения элемента по индексу, который поддерживает отрицательные индексы (от конца массива).
Кстати, если интервью пошло бы дальше, ты могли бы спросить и про побитовые операции.
console.log(~5);
console.log(5 ^ 3);
console.log(5 | 3);
console.log(5 & 3);
console.log(5 << 1);
Если разбор был интересен и ждешь продолжение рубрики разрборов собеседований — ставь 🔥
А вообще думаю скоро сделаем полноценное видео на ютубе на эти темы 🫡
