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

Определение

Замыкание — это внутренняя функция, которая имеет доступ к переменным внешней функции, или, по сути, функция внутри функции.

Пример

Вот часть моей функции saveGame() из игры Tic Tac Toe, которую я недавно создал. Переменная board определяется с помощью пустого массива, а затем в функции JQuery .each мы добавляем innerText к доске из каждого («td») (каждого места на доске).

function saveGame(){
  let board = []
  $('td').each(function(){
  board.push(this.innerText)
  })
}
// rest of

Замыкания отлично подходят для объектно-ориентированного программирования. Они помогают с абстракцией и инкапсуляцией. Еще один интересный момент, о котором я не знал до исследования, заключается в том, что forEach на самом деле является функцией обратного вызова. Он принимает функцию обратного вызова (это функция, которую вы запускаете для массива «для каждого» элемента в массиве).

Возвращаясь к моему начальному пункту — я понял, что неосознанно использовал замыкания в своих ранних написаниях JavaScript, но понятия не имел, что у них есть официальное название. Также полезно подумать о том, как работает метод forEach, и осознать, что он на самом деле работает как функция обратного вызова.