Во время моих последних раундов собеседований меня несколько раз просили написать Polyfills, поэтому в этом посте я объясню «Часто задаваемые Polyfills для фронтенд-интервью».

Начну с того, что такое заливки Polyfills и зачем они нужны.

Полифилл или полифиллер — это часть кода (или подключаемый модуль), предоставляющая технологию, которую вы, разработчик, ожидаете от браузера в исходном виде. Например, полифилл можно использовать для имитации функциональности Array.flat в IE7 с использованием стека или рекурсии или чего-то еще, что вам нужно, поскольку Array.flat изначально не поддерживается IE7.

Теперь, когда вы знаете, что такое полифиллы, позвольте мне начать с написания часто задаваемых полифиллов-массивов на JavaScript.

Array.map

Перед написанием полифилла нужно понять, как работает функция.

В случае Array.map

  1. Он принимает функцию обратного вызова, которая выполняется для каждого элемента массива, и thisArg (необязательно).
  2. Функция обратного вызова имеет 3 аргумента — элемент, индекс и сам массив.
  3. Карта возвращает новый массив и не изменяет исходный массив.

На основе этой информации мы можем создать polyfill customMap.

  1. Polyfill должен быть присоединен к прототипу, чтобы к нему можно было получить доступ как к свойству массива.
  2. this внутри функции указывает на массив, для которого вызывается customMap.

Точно так же мы можем написать остальные полифиллы Array.

Array.reduce (наиболее часто задаваемые)

  1. Reduce принимает два аргумента: функцию обратного вызова и начальное значение (необязательно).
  2. Функция обратного вызова принимает 4 аргумента: аккумулятор, который является результатом вычисления предыдущих значений, текущее значение, индекс и массивы являются необязательными.
  3. Сокращение имеет много применений, например, сумму всех элементов в массиве или с точки зрения интервью, его также можно использовать как функцию конвейера.
  4. Точно так же вас могут попросить написать polyfill для reduceRight.

Массив.фильтр

  1. Он похож на Array.map, с той лишь разницей, что в массив будут помещены только те элементы, которые удовлетворяют функции обратного вызова.
  2. Длина отфильтрованного массива всегда будет меньше или равна исходному массиву.
  3. Элементы отфильтрованного массива не изменяются.
  4. Array.find похож на фильтр, вместо того, чтобы протолкнуть элемент, ему нужно было вернуть элемент, который удовлетворяет условию обратного вызова.

Array.flat (Также часто спрашивают)

  1. Здесь массив выравнивается с переданной ему зависимостью, по умолчанию массив выравнивается до одного уровня.
  2. Здесь для решения этой проблемы используется рекурсия, но ее также можно решить с помощью функции стека или генератора.
  3. Точно так же Array.flatMap можно было бы спросить в интервью.

Это все часто задаваемые полифилы Array, для полифиллов Promise, пожалуйста, посетите Часть 2 (крайне важно для интервью)

В качестве бонуса я также поделюсь еще одним очень часто задаваемым вопросом (спросил меня в Tekion, Practo & Paytm)

Связывать

  1. Bind используется для заимствования функций, он возвращает новую функцию, которую можно вызвать позже.
  2. Чтобы написать функцию customBind, вам нужно прикрепить ее к прототипу функции, поскольку Bind является частью прототипа функции.
  3. Разница между bind и call или apply заключается в том, что call и apply вызываются при их вызове, а bind возвращает функцию, которую можно вызвать позднее.
  4. Интервьюер может попросить вас напрямую написать полифилл связывания, или они могут представить вам сценарий, в котором вам нужно использовать функцию связывания, например, в setTimeout (спросил меня в Rippling), если вас попросят вызвать функцию с «этим» присутствует ключевое слово, то вам нужно связать его, иначе оно вернет значение undefined.
  5. Если вы знакомы с React, он и там широко используется.

Это все, ребята……

За частью 2 обращайтесь — https://medium.com/@souravsaha101/polyfills-polyfills-polyfills-part-2-419f88b23f8f

Подпишитесь на меня в LinkedIn по адресу https://www.linkedin.com/in/sourav-saha-66b37b92/