Напишите функцию сложения вида add(num1)(num2)
Решение кроется в переопределении метода valueOf .
Ответ:
В примере выше после выполнения add(2)(3) возвращается function, которую console.log будет превращать в String, в ходе этих действий будет вызван метод valueOf для преобразования function к примитиву, а так мы переопределили данный метод, то он вернёт наше значение sum вместо стандартного.
👉 @frontendInterview
Решение кроется в переопределении метода valueOf .
Ответ:
const add = (a) => {
let sum = a;
const func = (b) => {
sum += b;
return func;
};
func.valueOf = () => sum;
return func;
};
console.log(add(2)(3)); // 5;
Когда мы вызываем console.log , он ожидает увидеть String, если его там нет, то он попытается сделать из полученного значения String.В примере выше после выполнения add(2)(3) возвращается function, которую console.log будет превращать в String, в ходе этих действий будет вызван метод valueOf для преобразования function к примитиву, а так мы переопределили данный метод, то он вернёт наше значение sum вместо стандартного.
👉 @frontendInterview
Напишите простую функцию, чтобы узнать равен ли один из входных параметров 3.
Тут делается упор на проверку знаний об arguments, но иногда заходят ещё дальше и просят рассказать каким образом работает Array.prototype.slice.call(arguments).
Ответ:
Но всё же, как он работает ?
.call() и .apply() позволяют явно установить this в функции. И если передать argument как this, то slice будет работать с ним как с обычным массивом.
👉 @frontendInterview
Тут делается упор на проверку знаний об arguments, но иногда заходят ещё дальше и просят рассказать каким образом работает Array.prototype.slice.call(arguments).
Ответ:
function isThreePassed(){
const args = Array.prototype.slice.call(arguments);
return args.indexOf(3) != -1;
}
isThreePassed(1,2) //false
isThreePassed(9,3,4,9) //true
Как мы знаем, arguments не массив, а обычный объект, поэтому у него нет такого полезного метода как indexOf. Для этого используется Array.prototype.slice.call(arguments), который делает из argument — > array.Но всё же, как он работает ?
.call() и .apply() позволяют явно установить this в функции. И если передать argument как this, то slice будет работать с ним как с обычным массивом.
👉 @frontendInterview
Учитесь сейчас важным навыкам фронтенд-разработки со скидкой 30%🚀
-30% на самые популярные курсы для роста до мидла от HTML Academy:
— «Алгоритмы и структуры данных». Узнаете, как писать быстрый и чистый код и правильно выстраивать архитектуру проекта. А ещё сможете проходить собеседования в крупные компании, ведь там обязательно спрашивают про алгоритмы.
— «TypeScript. Теория типов». Научитесь кодить быстрее и без ошибок, а ваш код будет проще читать и поддерживать.
— «Анимации, часть 1. CSS-анимации». Сможете создавать простые и сложные анимации, чтобы сделать сайт красивым.
А если купить курсы в комплекте, можно сэкономить ещё 10%.
Скидки действуют до 19 июня🎁
Начните учиться прямо сейчас, двигайтесь в комфортном темпе и сразу применяйте новые навыки в своих проектах.
-30% на самые популярные курсы для роста до мидла от HTML Academy:
— «Алгоритмы и структуры данных». Узнаете, как писать быстрый и чистый код и правильно выстраивать архитектуру проекта. А ещё сможете проходить собеседования в крупные компании, ведь там обязательно спрашивают про алгоритмы.
— «TypeScript. Теория типов». Научитесь кодить быстрее и без ошибок, а ваш код будет проще читать и поддерживать.
— «Анимации, часть 1. CSS-анимации». Сможете создавать простые и сложные анимации, чтобы сделать сайт красивым.
А если купить курсы в комплекте, можно сэкономить ещё 10%.
Скидки действуют до 19 июня🎁
Начните учиться прямо сейчас, двигайтесь в комфортном темпе и сразу применяйте новые навыки в своих проектах.
Объедините два массива с вложенностью
Задачу можно решать различными способами. Обычно хотят узнать знает ли собеседуемый такой метод как reduce.
Идея заключается в том, чтобы обойти все элементы исходного массива и его “под массивов” с целью вернуть найденные значения в новый массив. Это происходит рекурсивно пока мы не дойдём до последнего элемента.
Так же с формированием нового массива нам помогает concat.
Ответ:
👉 @frontendInterview
Задачу можно решать различными способами. Обычно хотят узнать знает ли собеседуемый такой метод как reduce.
Идея заключается в том, чтобы обойти все элементы исходного массива и его “под массивов” с целью вернуть найденные значения в новый массив. Это происходит рекурсивно пока мы не дойдём до последнего элемента.
Так же с формированием нового массива нам помогает concat.
Ответ:
const flatten = (arr) => arr.reduce((flat, toFlatten) => flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten), []);👉 @frontendInterview
This media is not supported in your browser
VIEW IN TELEGRAM
Занимаетесь frontend-разработкой, но для серьёзных проектов пока не хватает навыков?
Тимлиды ВКонтакте записали топовый курс с акцентом на практику. За 5 месяцев вы научитесь делать качественные, быстрые интерфейсы, разберётесь с деплоем, CI/CD, кэшированием и серверной оптимизацией — и поймёте, как тратить на разработку меньше времени.
Результатом обучения станет готовый сервис на React + Redux с деплоем на собственном сервере. После прохождения курса вы точно будете готовы к работе над крупными проектами, а наш HR приложит максимум усилий, чтобы трудоустроить вас в хорошую компанию.
Переходите по ссылке и записывайтесь на курс до 17 июня — по промокоду FRONTERVIEW действует скидка 10%. Кстати, на сайте можно пройти бесплатную демоверсию.
Тимлиды ВКонтакте записали топовый курс с акцентом на практику. За 5 месяцев вы научитесь делать качественные, быстрые интерфейсы, разберётесь с деплоем, CI/CD, кэшированием и серверной оптимизацией — и поймёте, как тратить на разработку меньше времени.
Результатом обучения станет готовый сервис на React + Redux с деплоем на собственном сервере. После прохождения курса вы точно будете готовы к работе над крупными проектами, а наш HR приложит максимум усилий, чтобы трудоустроить вас в хорошую компанию.
Переходите по ссылке и записывайтесь на курс до 17 июня — по промокоду FRONTERVIEW действует скидка 10%. Кстати, на сайте можно пройти бесплатную демоверсию.
Чему равен 1vmin, если ширина вьюпорта 1000px, а высота 800px.
Anonymous Quiz
21%
80px
27%
10px
41%
8px
11%
100px
Сила jаvanoscript: 68 способов эффективного использования JS
Эта книга поможет вам освоить всю мощь языка программирования jаvanoscript и научит применять его максимально эффективно. Автор описывает внутреннюю работу языка на понятных практических примерах, которые помогут как начинающим программистам, так и опытным разработчикам повысить уровень понимания jаvanoscript и существенно обогатить опыт его применения в своей работе.
👉 @frontendInterview
Эта книга поможет вам освоить всю мощь языка программирования jаvanoscript и научит применять его максимально эффективно. Автор описывает внутреннюю работу языка на понятных практических примерах, которые помогут как начинающим программистам, так и опытным разработчикам повысить уровень понимания jаvanoscript и существенно обогатить опыт его применения в своей работе.
👉 @frontendInterview
The takeWhile Function
Создайте функцию, которая принимает массив значений и предикат, который будет проверять каждое из значений. Функция должна проверять каждое значение последовательно, пока результат равен true.
Пример:
👉 @frontendInterview
Создайте функцию, которая принимает массив значений и предикат, который будет проверять каждое из значений. Функция должна проверять каждое значение последовательно, пока результат равен true.
Пример:
function isEven(num) {
return num % 2 === 0;
}
var seq = [2,4,6,8,1,2,5,4,3,2];
takeWhile(seq, isEven) // -> [2,4,6,8]👉 @frontendInterview
В чем смысл оборачивания всего содержимого JavaScript-файла в функцию?
Этот шаблон называется IIFE - Immediately Invoked Function Expression (немедленно вызываемое функциональное выражение). Этот подход позволяет:
- обеспечить коду собственный блок видимости, то-есть контекст выполнения
- избежать загрязнения глобальной области видимости глобальными переменными
- избежать неумышленного переопределения уже существующих переменных в глобальной области видимости
👉 @frontendInterview
Этот шаблон называется IIFE - Immediately Invoked Function Expression (немедленно вызываемое функциональное выражение). Этот подход позволяет:
- обеспечить коду собственный блок видимости, то-есть контекст выполнения
- избежать загрязнения глобальной области видимости глобальными переменными
- избежать неумышленного переопределения уже существующих переменных в глобальной области видимости
👉 @frontendInterview
Каково значение свойства display у HTML элемента noscript?
Anonymous Quiz
17%
initial
6%
inline-block
50%
none
18%
block
9%
inline
В чем смысл и польза указания use strict в начале JavaScript-файла?
Команда use strict включает так называемый строгий режим. В этом режиме предупреждения становятся ошибками, что помогает в написании более чистого и безопасного кода, менее уязвимого к ошибкам в продакшене.
👉 @frontendInterview
Команда use strict включает так называемый строгий режим. В этом режиме предупреждения становятся ошибками, что помогает в написании более чистого и безопасного кода, менее уязвимого к ошибкам в продакшене.
👉 @frontendInterview
Как можно задать стили только первым двум элементам li?
Anonymous Quiz
3%
li:last-child + li
60%
li:nth-child(-n+2)
37%
li:first-child+li
Как можно клонировать объект в JS?
Можно использовать оператор rest
👉 @frontendInterview
Можно использовать оператор rest
(...)
Можно использовать Object.assign(newObj, oldObj).
Но эти подходы не позволяют выполнить глубокое клонирование. Поэтому, если нам нужно клонировать объект со вложенными объектами, мы можем использовать либо метод какой-либо библиотеки (привет, lodash), либо сделать это средствами встроенного объекта JSON.JSON.parse(JSON.stringify(objectToClone))
👉 @frontendInterview