Что такое «поднятие переменных»?
Сущность концепции «поднятия переменных» заключается в том, что объявления «поднимаются» в верхнюю часть текущей области видимости. В результате переменной можно воспользоваться до её объявления. Поднимаются лишь объявления переменных, но не код их инициализации. Обратите внимание на то, что поведение переменных, объявляемых с использованием ключевого слова var, отличается от поведения переменных и констант, объявленных с использованием let и const.
👉 @frontendInterview
Сущность концепции «поднятия переменных» заключается в том, что объявления «поднимаются» в верхнюю часть текущей области видимости. В результате переменной можно воспользоваться до её объявления. Поднимаются лишь объявления переменных, но не код их инициализации. Обратите внимание на то, что поведение переменных, объявляемых с использованием ключевого слова var, отличается от поведения переменных и констант, объявленных с использованием let и const.
👉 @frontendInterview
Что выведет данный код?
Этот код выведет 0. Оператор delete используется для удаления свойств объектов. А x — это не свойство объекта — это локальная переменная. Оператор delete не воздействует на локальные переменные.
👉 @frontendInterview
Этот код выведет 0. Оператор delete используется для удаления свойств объектов. А x — это не свойство объекта — это локальная переменная. Оператор delete не воздействует на локальные переменные.
👉 @frontendInterview
Что выведет следующий код?
Этот код выведет xyz. Свойство company является не свойством объекта emp1, а свойством его прототипа. Оператор delete не удаляет свойства прототипов объектов. У объекта emp1 нет собственного свойства company. Проверить это можно так:
👉 @frontendInterview
Этот код выведет xyz. Свойство company является не свойством объекта emp1, а свойством его прототипа. Оператор delete не удаляет свойства прототипов объектов. У объекта emp1 нет собственного свойства company. Проверить это можно так:
console.log(emp1.hasOwnProperty('company')); // false
Если нам всё же необходимо удалить это свойство — сделать это можно, либо напрямую обратившись к объекту Employee (delete Employee.company), либо — обратившись к прототипу объекта emp1, воспользовавшись его свойством proto (delete emp1.proto.company).👉 @frontendInterview
Web Components in Action (2019)
Веб-компоненты - это стандартизированный способ создания многоразовых пользовательских элементов для веб-страниц и приложений с использованием HTML, CSS и JavaScript. Веб-компонент хорошо инкапсулирован, сохраняет свою внутреннюю структуру отдельно от других элементов страницы, чтобы они не сталкивались с остальной частью кода. Работая с книгой, вы научитесь проектировать, создавать и развертывать повторно используемые веб-компоненты с нуля.
👉 @frontendInterview
Веб-компоненты - это стандартизированный способ создания многоразовых пользовательских элементов для веб-страниц и приложений с использованием HTML, CSS и JavaScript. Веб-компонент хорошо инкапсулирован, сохраняет свою внутреннюю структуру отдельно от других элементов страницы, чтобы они не сталкивались с остальной частью кода. Работая с книгой, вы научитесь проектировать, создавать и развертывать повторно используемые веб-компоненты с нуля.
👉 @frontendInterview
Последний выживший
Вам дана строка и массив чисел. Числа обозначают позиции букв в строке, которые должны быть удалены. После удаления уменьшается length массива. Верните букву, которая останется в массиве после удаления.
Пример:
👉 @frontendInterview
Вам дана строка и массив чисел. Числа обозначают позиции букв в строке, которые должны быть удалены. После удаления уменьшается length массива. Верните букву, которая останется в массиве после удаления.
Пример:
let str = "zbk", arr = [0, 1]
str = "bk", arr = [1]
str = "b", arr = []
return 'b'👉 @frontendInterview
React Design Patterns and Best Practices (2019)
В книге рассказывается о том, как, работая с React.js, применять существующие шаблоны проектирования в разных ситуациях, будь то новые или уже существующие проекты. Книга поможет вам начать работать с React, создавая ваши проекты более гибкими, эффективными и простыми в обращении, значительно повышая скорость рабочего процесса без снижения качества.
👉 @frontendInterview
В книге рассказывается о том, как, работая с React.js, применять существующие шаблоны проектирования в разных ситуациях, будь то новые или уже существующие проекты. Книга поможет вам начать работать с React, создавая ваши проекты более гибкими, эффективными и простыми в обращении, значительно повышая скорость рабочего процесса без снижения качества.
👉 @frontendInterview
Можете ли вы описать основное различие методов массивов forEach() и map()? В каких ситуациях вы предпочли бы один из этих методов другому?
Для того чтобы понять разницу между этими методами — поговорим об особенностях работы каждого из них.
Вот как работает .forEach():
1. Он перебирает элементы массива.
2. Он выполняет переданную ему функцию обратного вызова для каждого элемента массива.
3. Он ничего не возвращает.
1. Он перебирает элементы массива.
2. Он преобразует каждый элемент исходного массива в элемент нового массива, вызывая переданную ему функцию для каждого элемента исходного массива.
👉 @frontendInterview
Для того чтобы понять разницу между этими методами — поговорим об особенностях работы каждого из них.
Вот как работает .forEach():
1. Он перебирает элементы массива.
2. Он выполняет переданную ему функцию обратного вызова для каждого элемента массива.
3. Он ничего не возвращает.
const a = [1, 2, 3];Вот краткая характеристика метода .map():
const doubled = a.forEach((num, index) => {
// Сделать что-то с num и/или с index.
});
// doubled = undefined
1. Он перебирает элементы массива.
2. Он преобразует каждый элемент исходного массива в элемент нового массива, вызывая переданную ему функцию для каждого элемента исходного массива.
const a = [1, 2, 3];В результате оказывается, что основное различие между .forEach() и .map() заключается в том, что .map() возвращает новый массив. Если вам нужно получить результат преобразования элементов исходного массива, не меняя этот массив, тогда стоит выбрать .map(). Если же нужно просто перебрать элементы массива — тогда можно воспользоваться .forEach().
const doubled = a.map(num => {
return num * 2;
});
// doubled = [2, 4, 6]
👉 @frontendInterview
Что такое необъявленная переменная в JavaScript?
Необъявленная переменная создаётся при назначении значения идентификатору, который не был ранее объявлен с использованием var, let или const. Необъявленные переменные объявляются в глобальной области видимости, за пределами текущей области видимости. В строгом режиме при попытке назначения значения необъявленной переменной будет выброшено исключение ReferenceError. Использовать необъявленные переменные не рекомендуется — так же, как не рекомендуется использовать глобальные переменные. Их стоит всеми силами избегать. Для того чтобы обезопасить себя от последствий использования необъявленных переменных, воспользуйтесь блоком try/catch.
👉 @frontendInterview
Необъявленная переменная создаётся при назначении значения идентификатору, который не был ранее объявлен с использованием var, let или const. Необъявленные переменные объявляются в глобальной области видимости, за пределами текущей области видимости. В строгом режиме при попытке назначения значения необъявленной переменной будет выброшено исключение ReferenceError. Использовать необъявленные переменные не рекомендуется — так же, как не рекомендуется использовать глобальные переменные. Их стоит всеми силами избегать. Для того чтобы обезопасить себя от последствий использования необъявленных переменных, воспользуйтесь блоком try/catch.
function foo() {
x = 1; // Выбрасывает в строгом режиме ReferenceError
}
foo();
console.log(x); // 1👉 @frontendInterview
Dubstep
Вам дана строка, соответствующая звукам из дабстепа. Необходимо очистить строку от "WUB" и вернуть слова из песни.
Пример:
👉 @frontendInterview
Вам дана строка, соответствующая звукам из дабстепа. Необходимо очистить строку от "WUB" и вернуть слова из песни.
Пример:
songDecoder("WUBWEWUBAREWUBWUBTHEWUBCHAMPIONSWUBMYWUBFRIENDWUB")
// => WE ARE THE CHAMPIONS MY FRIEND👉 @frontendInterview