Se você programa no Google Apps Script (GAS), vai notar que ele usa JavaScript moderno na sua sintaxe, o que inclui var, let ou const para declarar uma variável. Mas essas três formas de declarar variáveis comportam-se de modos diferentes, o que impacta legibilidade, manutenção e bugs no seu código. Vamos te explicar como funcionam, com exemplos, diferenças de escopo (scope), hoisting, mutabilidade, e quando usar cada uma.
O que é var, let e const
Resumidamente, essa tabela pode te ajudar a entender o que é cada um dos tipos:
| Definição | O que faz |
|---|---|
var | Declara uma variável com escopo de função ou global. É “antigo” no JS, presente desde versões mais antigas. |
let | Introduzido no ES6; escopo de bloco (o bloco = { … }), ou seja mais previsível. Pode ser reatribuída. |
const | Também escopo de bloco; não se pode reatribuir depois de definido. Deve ser inicializado na declaração. |
Na prática, o escopo de acesso a variável da sua função estará dessa forma com cada definição:
var: se você declarar dentro de uma função, a variável existe em toda a função. Se dentro de um bloco (por exemplo,ifoufor), ainda assim ela “vaza” para fora desse bloco.
leteconst: escopo de bloco, só estão visíveis dentro do bloco{}em que foram declarados. Se você declarar algo comlet/constdentro de umif, loop ou bloco, fora desse bloco não existe.
Atualizar valores da variável – reatribuição
Para cada um dos tipos, temos as seguintes regras:
var: pode ser reatribuída e redeclarada no mesmo escopo.
let: pode ser reatribuída, mas não redeclarada no mesmo escopo (o que reduz erros).
const: não pode ser reatribuída nem redeclarada no mesmo escopo. Mas atenção: se for um objeto ou array, suas propriedades podem ser alteradas (mutabilidade do conteúdo), só o “ponteiro” da variável para aquele objeto não pode mudar.
Usando var na prática
function exemploVar() {
if (true) {
var x = 'var dentro do bloco';
}
Logger.log(x); // imprime 'var dentro do bloco' – var vaza do bloco
}Note que a variável x está dentro de um bloco if, mas ao usar var é permitido que a variável seja acessada fora do bloco. Assim como é permitido a reescrita do valor dentro dessa variável.
No contexto do Apps Script e para automações comuns do dia a dia, quase nunca fará diferença o a definição que você vai utilizar.
Usando let e const na prática
function exemploLetConst() {
if (true) {
let y = 'let dentro do bloco';
const z = 'const dentro do bloco';
Logger.log(y); // ok
Logger.log(z); // ok
}
Logger.log(y); // erro – y não definido
Logger.log(z); // erro – z não definido
}Perceba que no caso do let e const, essas só podem ser acessadas dentro do bloco.
E no caso de const, não conseguimos reescrever o valor de forma alguma, embora conseguimos atualizar um atributo.
function exemploConstObjeto() {
const obj = { nome: 'Alice' };
obj.nome = 'Bob'; // ok, mutação permitida
// obj = {}; // erro: reassign de const
}Diferenças entre var, let e const: quando usar cada um e boas práticas
Como disse, se você trabalha sozinho e é responsável pela manutenção dos scripts, não vai fazer muita diferença usar var, const ou let. Eu diria que nesse caso a importância é puramente se o seu script cumpre com o seu dever e não gera constantes erros ou retrabalhos.
Mas para as boas práticas, principalmente se você trabalha em equipe, considere:
- Usar
constpor padrão, sempre que a variável não for mudada depois de atribuída. Isso deixa claro que aquele valor não será alterado, melhora legibilidade e ajuda a evitar bugs acidentais. - Use
letquando precisar reatribuir: por exemplo contadores de loop, valores temporários, etc. - Evite usar
varem código novo, a menos que você tenha um razão específica, compatibilidade com scripts mais antigos ou alguma restrição. - Declare variáveis no menor escopo possível: se vai usar só dentro de um bloco, use
letouconstdentro do bloco. Isso ajuda no entendimento e no desempenho (menor chance de conflitos). - Seja consistente no estilo do seu código: definir um padrão (por exemplo:
const→let→ nuncavar) ajuda equipe ou quando voltar ao código depois.
Conclusão
Para quem está começando, não tem vícios do JavaScript mais antigo ou buscando escrever scripts mais confiáveis:
- Comece preferindo
const, useletquando necessário, e evitevar, a menos que seja antigo ou por causa de compatibilidade. - Sempre declare variáveis antes de usá-las.
- Mantenha variáveis no escopo mais restrito possível.
- Use nomes significativos e constantes para valores fixos.
Dessa forma, você terá código mais limpo, menos propenso a erros inesperados e mais fácil de entender para outros (ou você mesmo no futuro).




