Houve uma série de artigos publicados ao longo dos anos que discutem técnicas de práticas recomendadas para JavaScript. Eu pensei em ir um pouco além do escopo desses artigos e delinear uma série de conceitos e técnicas avançadas de JavaScript que eu usei pessoalmente ou li sobre que poderiam ser inestimáveis em determinadas circunstâncias. Este artigo não abrange necessariamente todos os detalhes dos métodos que estou descrevendo, mas fornece uma visão geral, juntamente com exemplos avançados de JavaScript com código.
Fechamentos para Estender o Escopo Variável
Fechamentos em JavaScript são um conceito bastante direto e foram discutidos online em vários artigos aprofundados. O fato de serem diretos não significa necessariamente que sejam simples, como visto pelos extensos artigos que abordam o assunto. Simplificando, os closures permitem que o escopo da variável seja estendido além das restrições de escopo comuns das funções.
Para criar uma closure, você aninha uma função dentro de uma função. Essa função interna tem acesso a todas as variáveis no escopo de sua função pai. Isso é útil ao criar métodos e propriedades em scripts orientados a objetos.
As partes principais do script são a função anônima aninhada destacada em verde e a chamada do método na alertfunção (última linha). Como o método no alerta está realmente chamando uma função aninhada, esse método é capaz de ler o valor da variável chamada newValue, mesmo que essa variável não esteja dentro do escopo da função ou método anônimo. Os desenvolvedores usam closures o tempo todo, provavelmente sem saber, já que uma closure é criada sempre que uma função anônima é aninhada dentro de outra função e utiliza variáveis do escopo da função pai.
O poder do encerramento é revelado quando esse método (a função interna) é chamado, e os valores que normalmente não seriam acessíveis estão dentro do escopo “regional” e, portanto, podem ser usados como qualquer outro valor. Consulte as referências abaixo para obter algumas explicações mais detalhadas sobre fechamentos e sua relação com o escopo. Eu também recomendo que você pegue um bom livro de JavaScript avançado que ofereça uma boa discussão dos conceitos associados a closures.
Literais de objetos para passar argumentos opcionais
Aqui está uma dica de codificação útil para se ter em mente ao lidar com funções que podem aceitar um grande número de argumentos opcionais. Em vez de passar o grande número de argumentos da maneira convencional, o que poderia complicar desnecessariamente a função, você pode passar apenas um argumento que acaba sendo uma coleção de argumentos declarados em um literal de objeto.
Os dois primeiros argumentos são obrigatórios, portanto, dentro da função, não verificamos sua existência. Os últimos 4 argumentos não são obrigatórios, portanto, apenas exibimos seus valores se existirem. Chamamos a função 3 vezes diferentes (últimas 3 linhas), com diferentes números de argumentos a cada vez.
Você pode ver que se o número de argumentos passados estivesse nas dezenas ou mais, o código poderia parecer um pouco confuso e seria mais difícil de manter ou ler.
Tecnicamente, esse segundo método de passar os argumentos pode exigir um pouco mais de código, mas com uma grande coleção de argumentos, há algumas vantagens. Primeiro, a própria função é simplificada porque aceita apenas um argumento ( args), que é uma coleção de todos os valores passados do objeto literal ( name, team, position, etc).
Além disso, os valores reais dos argumentos são fáceis de ler e podem ser facilmente entendidos, atualizados ou modificados, pois a correlação entre os valores e as referências dos argumentos é mais direta. Se a função exigisse apenas um pequeno número de argumentos, esse método não seria necessário e poderia ter o efeito oposto. Portanto, use essa técnica com moderação e apenas em situações em que você prevê que a coleção de argumentos será difícil de manter ao longo do tempo.
Estes procedimento podem ser cruciais na criação de sites.