Fechamentos de JavaScript - Usando a especificação ECMA, explique como o fechamento é criado e mantido

Eu estou lendo sobreFechamentos de JavaScript. Estou familiarizado comContextos de Execução, comoAmbiente Lexical é mantido e muito familiarizado comEscopo Lexical.

eu quero sabercomo fechamentos em JavaScript sãocriado emantido. Às vezes é difícil para mim entender conceitos tão importantes sem sabercomo está realmente fazendo isso. Eu sei que, de acordo com a Wikipedia, um fechamento é

é uma função ou referência a uma função em conjunto com um ambiente de referência - uma tabela armazenando uma referência para cada uma das variáveis ​​não locais (também chamadas de variáveis ​​livres) dessa função.

Mas a minha pergunta é, eu quero sabercomo, de acordo comEspecificação ECMA, que um fechamento é criado e mantido. Eu estounão Em busca de uma explicação de alto nível sobre a teoria do fechamento, por favor, consulte a Especificação ECMA em sua resposta.

Nota: Por favor, não considere isso uma duplicata, a menos que a resposta explique um fechamento usando a Especificação ECMA. Novamente, não estou interessado em alguém citando a wikipedia e dando um exemplo, eu quero entender completamente como o JavaScript faz isso. (Eu estou familiarizado comesta pergunta em SO).

questionAnswers(1)

yourAnswerToTheQuestion