Этот тест предназначен для проверки ваших знаний JavaScript на продвинутом уровне. Он охватывает пять основных категорий: Асинхронность и промисы: Работа с асинхронными операциями, промисами, async/await. Замыкания и область видимости: Понимание работы замыканий, областей видимости переменных (лексическая, блочная, функциональная). Контекст выполнения (this): Определение значения `this` в различных ситуациях (функции, методы объектов, стрелочные функции, bind, call, apply). ES6+ возможности: Использование новых возможностей языка, появившихся в ES6 и более поздних стандартах (классы, деструктуризация, spread/rest операторы, и т.д.). Объектно-ориентированное программирование (ООП): Принципы ООП в JavaScript, прототипное наследование, классы. Тест состоит из 20 вопросов с одиночным и множественным выбором. Внимательно читайте вопросы и варианты ответов. Некоторые вопросы могут иметь несколько правильных ответов, в то время как другие – только один. После прохождения теста вы получите общую оценку, а также рекомендации по каждой из категорий, которые помогут вам определить области для дальнейшего изучения. Начать тестДалее Шаг 1 из 20 Что такое замыкание в JavaScript? Функция, которая выполняется сразу после объявления.Функция, которая имеет доступ к переменным из внешней (охватывающей) функции, даже после того, как внешняя функция завершила выполнение.Способ объявления переменной с использованием ключевого слова `var`.Объект, содержащий свойства и методы. ДалееДалее Шаг 2 из 20 Какие способы создания промисов существуют в JavaScript? С помощью конструктора `new Promise()`С помощью ключевого слова `async` перед объявлением функцииС помощью метода `Promise.resolve()`С помощью метода `Promise.reject()`С помощью метода `then()` НазадНазад ДалееДалее Шаг 3 из 20 Какое значение будет иметь `this` внутри стрелочной функции, если она объявлена внутри метода объекта? Сам объектГлобальный объект (window в браузере, global в Node.js)Лексический `this` (то есть `this` того места, где стрелочная функция была объявлена)undefined НазадНазад ДалееДалее Шаг 4 из 20 Какие из следующих утверждений о `let` и `const` верны? `let` и `const` имеют блочную область видимости.Переменные, объявленные с помощью `const`, нельзя переназначить.Переменные, объявленные с помощью `let`, нельзя переназначить.`let` и `const` поднимаются (hoisting) так же, как и `var`.Значение переменной, объявленной с помощью `const` и являющейся объектом, нельзя изменить. НазадНазад ДалееДалее Шаг 5 из 20 Что такое прототипное наследование в JavaScript? Способ создания классов.Механизм, с помощью которого объекты могут наследовать свойства и методы от других объектов (прототипов).Способ объявления функций.Тип данных в JavaScript. НазадНазад ДалееДалее Шаг 6 из 20 В чем разница между `call` и `apply`? Нет никакой разницы.`call` принимает аргументы через запятую, а `apply` принимает массив аргументов.`apply` принимает аргументы через запятую, а `call` принимает массив аргументов.`call` - это метод Function.prototype, а `apply` нет. НазадНазад ДалееДалее Шаг 7 из 20 Что выведет следующий код? ```javascript function foo() { console.log(this.bar); } var bar = "global"; var obj1 = { bar: "obj1", foo: foo }; var obj2 = { bar: "obj2" }; foo(); obj1.foo(); foo.call(obj2); ``` "global", "obj1", "obj2""obj1", "obj1", "obj2""global", "global", "global"undefined, undefined, undefined НазадНазад ДалееДалее Шаг 8 из 20 Что такое деструктуризация в JavaScript? Удаление свойств из объекта.Способ извлечения значений из массивов или объектов и присваивания их переменным.Создание нового объекта.Объединение двух массивов. НазадНазад ДалееДалее Шаг 9 из 20 Что такое spread и rest операторы и в чем их отличие? Spread оператор используется для объединения массивов, а rest оператор — для передачи неопределенного количества аргументов в функцию.Spread оператор используется для "распаковки" элементов массива или свойств объекта, а rest оператор — для сбора оставшихся аргументов функции в массив.Они являются взаимозаменяемыми.Rest оператор используется для "распаковки" элементов массива, а spread оператор — для сбора оставшихся аргументов функции в массив. НазадНазад ДалееДалее Шаг 10 из 20 Что выведет следующий код? ```javascript console.log(typeof null); console.log(typeof undefined); ``` "object", "undefined""null", "undefined""object", "object""undefined", "undefined" НазадНазад ДалееДалее Шаг 11 из 20 Что такое Event Loop в JavaScript? Цикл `for`.Механизм, который позволяет JavaScript выполнять асинхронные операции в однопоточной среде.Цикл `while`.Способ обработки ошибок. НазадНазад ДалееДалее Шаг 12 из 20 Как можно создать копию объекта в JavaScript, чтобы изменения в копии не затрагивали исходный объект? Использовать оператор присваивания (`=`).Использовать метод `Object.assign()`.Использовать spread оператор (`...`).Использовать метод `JSON.parse(JSON.stringify(obj))`. Использовать цикл `for...in`. НазадНазад ДалееДалее Шаг 13 из 20 Что такое мемоизация в JavaScript? Техника оптимизации, при которой результаты выполнения функций кэшируются, чтобы избежать повторных вычислений для одних и тех же входных данных.Способ объявления переменных.Тип данных в JavaScript.Способ создания анимации. НазадНазад ДалееДалее Шаг 14 из 20 Что такое каррирование? Это когда функция возвращает другую функцию.Это преобразование функции с множеством аргументов в цепочку функций, каждая из которых принимает один аргумент.Это когда функция принимает другую функцию в качестве аргумента.Это способ создания замыканий. НазадНазад ДалееДалее Шаг 15 из 20 Что такое `Promise.all()`? Метод, который принимает массив промисов и возвращает промис, который разрешается, когда все промисы в массиве разрешатся, или отклоняется, если хотя бы один из промисов отклонится.Метод, который принимает массив промисов и возвращает промис, который разрешается, когда хотя бы один из промисов в массиве разрешится.Метод для создания нового промиса.Метод для обработки ошибок в промисах. НазадНазад ДалееДалее Шаг 16 из 20 Что такое `async/await`? Ключевые слова для создания циклов.Синтаксический сахар над промисами, который делает асинхронный код более похожим на синхронный.Способ объявления переменных.Способ создания классов. НазадНазад ДалееДалее Шаг 17 из 20 В чем разница между `==` и `===`? Нет никакой разницы.`==` сравнивает значения с приведением типов, а `===` сравнивает значения и типы без приведения.`===` сравнивает значения с приведением типов, а `==` сравнивает значения и типы без приведения.`==` используется для сравнения чисел, а `===` — для сравнения строк. НазадНазад ДалееДалее Шаг 18 из 20 Какие из следующих методов массивов являются мутирующими (изменяют исходный массив)? `.map()``.filter()``.push()``.sort()``.slice()``.splice()` НазадНазад ДалееДалее Шаг 19 из 20 Что такое Temporal Dead Zone (TDZ)? Область видимости переменной, объявленной с помощью `var`.Период времени между поднятием (hoisting) переменной, объявленной с помощью `let` или `const`, и её объявлением в коде, когда доступ к переменной вызывает ошибку.Место в коде, где переменная недоступна.Способ объявления констант. НазадНазад ДалееДалее Шаг 20 из 20 Как работает сборщик мусора (garbage collector) в JavaScript? Удаляет все неиспользуемые переменные.Автоматически освобождает память, занимаемую объектами, которые больше не используются (на которые нет ссылок).Удаляет все комментарии из кода.Оптимизирует код для более быстрого выполнения. НазадНазад ДалееДалее Поздравляем, вы ответили на все вопросы! Показать результатыПоказать результаты