Замыкания в Javascript довольно просты, просто верните функцию из функции, и у вас есть (а) замыкание. Простым примером может быть создание функции с именем applyTaxes, которая принимает налоговую ставку определенного штата и возвращает функцию, которая применяет эту налоговую ставку к сумме, указанной в качестве аргумента внутренней функции.

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

function applyTaxes(taxRate){
   return function(dollarAmount){
      return dollarAmount + dollarAmount * (taxRate / 100)
   }
}
const ny = applyTaxes(8.15)

Теперь переменная ny назначена функции, поэтому при поиске общих налоговых затрат для любого заказа в штате Нью-Йорк мы просто вызываем функцию ny и передаем общую сумму заказа.

ny(184.98)

И мы получили бы 200.05587, легко.

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

function applyTaxes(taxRate){
   const cashMoneyDough = '$'
   return function(dollarAmount){
      const final = dollarAmount + dollarAmount * (taxRate / 100) 
      return cashMoneyDough + final 
   }
}

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