Тест: Знаетели вы современный JavaScript?
Продемонстрируйте своё мастерство JavaScript!
Знаете разницу между ES2015 и ES2022?
- Докажите своё мастерство в JavaScript! 🚀
- Регистрация не нужна. ✨
- Выбор из нескольких вариантов. 🤖 … Насколько это может быть сложным, а?
Какой будет вывод следующего кода?
const value = false;const defaultVal = 42;console.log(value ?? defaultVal);Оператор объединения с null (??) рассматривает ложные значения, такие как false, как допустимые. Поскольку value равно false, оно считается допустимым значением и возвращается.
false не равен null или undefined.
Какой будет вывод следующего кода?
const obj = { foo: null };const result = obj.foo?.bar;console.log(result);Оператор опциональной цепочки (?.) прекращает вычисление, если левый операнд равен null или undefined. Поскольку obj.foo равно null, obj.foo?.bar оценивается как undefined.
Опциональная цепочка останавливается на null или undefined.
Какой вывод у следующего кода?
const a = 42n;const result = a * 2n;console.log(result);Значения BigInt создаются добавлением n к числу. Нельзя смешивать BigInt с обычными числами в арифметических операциях. Здесь оба значения являются BigInt, поэтому умножение работает, в результате получается 84n.
Оба операнда имеют суффикс n.
Что это выводит?
const modulePromise = import('./myModule.js');console.log(typeof modulePromise);Функция import() возвращает Promise, который разрешается в объект модуля. Поскольку экземпляры Promise являются объектами, typeof modulePromise выводит 'object'.
Вызов import() возвращает промис; какой у него typeof?
Каков будет результат следующего кода?
const promises = [ Promise.resolve('success'), Promise.reject('error')];Promise.allSettled(promises).then(results => { console.log(results[0].status + ': ' + results[0].value);});Promise.allSettled возвращает массив объектов, описывающих результат каждого промиса. Первый промис fulfilled со значением 'success', поэтому оператор вывода напечатает fulfilled: success.
Проверьте первый элемент результатов и буквальное значение status.
Что возвращает str.matchAll()?
const str = 'foo1bar2baz3';const matches = str.matchAll(/\d/g);String.matchAll возвращает итератор совпадений, а не массив. Этот итератор можно использовать, чтобы получить все группы совпадений из строки.
Итератор можно преобразовать в массив, но это не одно и то же.
Что представляет собой import.meta.url?
console.log(import.meta.url);import.meta — это объект, содержащий метаданные о текущем модуле. Свойство import.meta.url представляет URL текущего модуля, который можно использовать для получения информации о том, где выполняется скрипт.
URL относится к модулю, содержащему этот код.
Каково значение a после логического присваивания?
let a = null;a ||= 10;console.log(a);Оператор логического ИЛИ присваивания (||=) присваивает значение справа, если значение слева ложно (null, undefined, 0, false и т.д.). Поскольку a равно null, ему присваивается значение 10.
Оператор ||= проверяет ложность значения.
Каково значение b после nullish‑присваивания?
let b = null;b ??= 10;console.log(b);Оператор присваивания с nullish‑слиянием (??=) присваивает значение справа, если значение слева равно null или undefined. Поскольку b равно null, ему присваивается значение 10.
Оператор ??= проверяет только null и undefined.
Что предоставляет WeakRef?
const obj = { data: 'important' };const ref = new WeakRef(obj);console.log(ref.deref());WeakRef предоставляет слабую ссылку на объект, что позволяет сборщику мусора удалить объект, если нет других ссылок. Поскольку obj здесь всё ещё сильно ссылается, deref() возвращает исходный объект. Если цель была бы освобождена, deref() вернёт undefined.
Пока существует сильная ссылка, цель WeakRef не освобождается.
