Junior
O que é o escopo em JavaScript?
sobes.tech IA
Resposta da IA
O âmbito (Scope) em JavaScript é o contexto no qual as variáveis e funções são definidas e acessíveis.
Simplificando, ele determina onde é possível fazer referência a uma variável ou função no código.
Existem vários tipos de escopo:
- Escopo global (Global Scope): Variáveis declaradas fora de qualquer função estão no escopo global. Elas podem ser acessadas de qualquer lugar no código.
// Variável global let globalVar = "Sou visível em todo lugar"; function showGlobal() { console.log(globalVar); // Disponível dentro da função } showGlobal(); - Escopo local (Local/Function Scope): Variáveis declaradas dentro de uma função estão no escopo local dessa função. Elas só podem ser acessadas dentro dessa função e nas funções aninhadas, mas não de fora.
function showLocal() { // Variável local let localVar = "Só me vejo aqui"; console.log(localVar); } showLocal(); // console.log(localVar); // Erro: localVar não está definido - Escopo de bloco (Block Scope): Introduzido no ES6 (ES2015) com
leteconst. Variáveis declaradas comletouconstdentro de chaves ({}), seja em blocos de código, loops ou condições, têm escopo de bloco. Variáveis declaradas comvarnão têm escopo de bloco.if (true) { // Variável com escopo de bloco let blockVar = "Visível apenas neste bloco"; console.log(blockVar); } // console.log(blockVar); // Erro: blockVar não está definido for (let i = 0; i < 2; i++) { // Variável com escopo de bloco no loop console.log(i); } // console.log(i); // Erro: i não está definido (se foi usado let)
Também é importante entender o conceito de cadeia de escopo (Scope Chain). Quando o JavaScript tenta encontrar o valor de uma variável, ele primeiro verifica no escopo atual. Se não encontrar, passa para o escopo externo (pai), e assim por diante, até o escopo global. Se não for encontrada, ocorre um erro ReferenceError.