Что такое полифиллинг в JavaScript и как работают обратные вызовы

4/30 из 30 дней решения и пояснений JavaScript от LeetCode

Сегодняшняя проблема требует небольшого представления о том, как работают обратные вызовы и как с их помощью можно кодировать некоторые из Современных методов, например map.

Итак, давайте сначала перейдем к самому первому вопросу

Что такое полифиллинг?

Это очень простая, но важная тема для понимания, так как это поможет вашему коду охватить более широкий круг людей и может повлиять на репутацию продукта.

По мере роста сообщества JavaScript и появления новых и новых функций и версий появляется множество старых браузеров или компьютеров, на которых работает старая версия клиента браузера, которая не сможет поддерживаться, но некоторые или многие из ваших клиентов по-прежнему принадлежат
эта категория, так как же убедиться, что код, который вы пишете, будет поддерживаться в старых браузерах или их версиях?

Вы создаете полифилл, который является реализацией Современного метода в тривиальной функции, которая использует самые основные компоненты JS, которые будут поддерживаться почти всеми браузерами и версиями, и решение сегодняшней проблемы является одним из таких примеров. .

Теперь переходим к следующему вопросу

Что такое обратные вызовы и как они работают?

Функция обратного вызова — это функция, передаваемая в другую функцию в качестве аргумента, которая затем вызывается внутри внешней функции для завершения какой-либо подпрограммы или действия.

как мы видели в нашем коде здесь

const map = function(arr, fn)

а также собственно здесь

mappedArr.push(fn(arr[i],parseInt(i)))

Итак, если вы, ребята, помните Стек вызовов, аналогичным образом JavaScript также использует еще одну структуру данных, называемую Очередь обратного вызова.

на приведенной здесь диаграмме показано, как стек вызовов и очереди обратного вызова используются вместе в цикле событий.

Код

/**
 * @param {number[]} arr
 * @param {Function} fn
 * @return {number[]}
 */
const map = function(arr, fn) {
     const mappedArr=[]
     for(const i in arr){
          mappedArr.push(fn(arr[i],parseInt(i))) 
     }
     return mappedArr
};

Заключение

Экосистема JavaScript быстро растет, и иногда некоторые другие приложения могут не догнать, поэтому для того, чтобы мы могли поддерживать наш продукт, нам нужно сделать наше приложение обратно совместимым, и здесь полифиллы играют важную роль наряду с передачей функции внутри другой функции. позволяет нам контролировать выполнение и результат другой функции, что позволяет нам лучше разделять код с помощью обратных вызовов.

Предыдущая статья — https://medium.com/@varnitsharma-102/arrow-functions-and-a-better-way-of-functional-object-Oriented-programming-in-js-5e1542cd02fe

Проблема — https://leetcode.com/problems/apply-transform-over-each-element-in-array/description/