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).