Domine Hoisting e Strict Mode com Boas Práticas JS
Guia Prático: Funções e Escopo em JavaScript Moderno
Neste tutorial, vamos explorar dois pilares fundamentais de qualquer linguagem de programação: funções e escopo. Esses conceitos são essenciais para organizar o código de forma clara e manter a lógica bem estruturada, facilitando tanto a manutenção quanto a evolução dos seus projetos.
Ao final deste estudo, você terá uma compreensão sólida sobre como declarar funções de diferentes maneiras, como e por que reutilizar funções ao máximo, e como o escopo influencia diretamente no acesso às variáveis no seu código JavaScriptIntrodução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente..
O que são Funções?🔗
De forma simples, uma função é um bloco de código independente que realiza uma tarefa específica. Podemos pensar numa função como uma espécie de "receita" que descreve como executar certas instruções sempre que forEstruturas de Controle: if, switch e loopsAprenda as estruturas de controle em JavaScript, como if/else, switch e loops, com exemplos claros e didáticos para otimizar seu código e lógica de programação. necessário. Em termos gerais:
- Funções evitam repetição de código.
- Permitem “isolar” lógicas específicas e facilitar a manutenção.
- Podem receber valores de entrada, chamados de parâmetros.
- Podem retornar um valor de saída, conhecido como retorno.
Declarando e Utilizando Funções🔗
Em JavaScriptIntrodução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente., existem diversas formas de declarar funções. Vamos abordar as principais:
Declaração Clássica (Function Declaration)
A forma mais tradicional de declarar funções em JavaScriptIntrodução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente. é usando a sintaxe:
function nomeDaFuncao(parametro1, parametro2) {
// conjunto de instruções
return resultado;
}
Exemplo:
function cumprimentar(nome) {
return `Olá, ${nome}!`;
}
console.log(cumprimentar("Maria")); // Saída: Olá, Maria!
Alguns pontos sobre Function Declaration:
1. O nome da função (cumprimentar
, no exemplo) deixa o código mais descritivo.
2. Você pode chamar a função em qualquer lugar do código, após sua declaração.
Expressão de Função (Function Expression)
Na Function Expression, atribuímos uma função anônima (ou nomeada, caso necessário) a uma variávelPré-processadores (SASS/SCSS): Variáveis, Mixins, NestingAprenda a manter seu CSS de forma otimizada com SASS/SCSS utilizando variáveis, mixins e nesting para um código limpo e produtivo.. A sintaxe é:
const nomeDaVariavel = function(parametro1, parametro2) {
// conjunto de instruções
return resultado;
};
Exemplo:
const somar = function(a, b) {
return a + b;
};
console.log(somar(2, 3)); // Saída: 5
Algumas diferenças em relação à declaração clássica:
- Aqui, a função é tratada como um valor e atribuída a uma variável
Pré-processadores (SASS/SCSS): Variáveis, Mixins, NestingAprenda a manter seu CSS de forma otimizada com SASS/SCSS utilizando variáveis, mixins e nesting para um código limpo e produtivo. (
somar
). - Nesse formato, a chamada só poderá ser feita após a atribuição, pois a função só passa a existir no momento em que o interpretador atinge essa linha de código.
Arrow Functions
As Arrow Functions (introduzidas no ECMAScript 6) possuem uma sintaxe mais sucinta e, em muitos casos, tornam o código mais limpo. A sintaxe é:
const nomeDaFuncao = (parametro1, parametro2) => {
// conjunto de instruções
return resultado;
};
Exemplo básico:
const multiplicar = (a, b) => {
return a * b;
};
console.log(multiplicar(3, 4)); // Saída: 12
Caso a função tenha apenas uma expressão de retorno, é possível omitir as chaves e o return
, como no exemplo:
const dividir = (a, b) => a / b;
console.log(dividir(10, 2)); // Saída: 5
As arrow functions também apresentam diferenças sutis em relação ao uso do this
e não possuem objetoFundamentos de Arrays e ObjetosDomine arrays e objetos em JavaScript com este tutorial narrativo. Aprenda a utilizar métodos e exemplos práticos para aprimorar seu desenvolvimento web.
arguments
próprio. Porém, manteremos nosso foco na escrita de funções e nos escopos básicos neste momento.
Passando Parâmetros e Recebendo Retornos🔗
As funções podem receber valores (parâmetros) e, se necessário, retornar um resultado (valor de retorno). Caso a função não contenha a palavra-chave return
, ela não retorna nenhum valor, retornando implicitamente undefined
.Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação.
function apresentarPessoa(nome, idade) {
console.log(`Nome: ${nome}`);
console.log(`Idade: ${idade}`);
// Sem retorno explícito
}
apresentarPessoa("João", 25);
// Saída:
// Nome: João
// Idade: 25
Se desejarmos devolver um valor, usamos return
:
function calcularDesconto(valor, porcentagem) {
const desconto = (valor * porcentagem) / 100;
return valor - desconto;
}
console.log(calcularDesconto(100, 10));
// Saída: 90
Importante: Uma vez que o interpretador encontre o comandoreturn
, ele encerra a execução da função imediatamente. Quaisquer instruções após oreturn
não serão executadas.
Escopo no JavaScript🔗
O escopo determina a visibilidade e o tempo de vida das variáveis em diferentes partes do código. Em JavaScriptIntrodução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente., existem principalmente:
1. Escopo Global
2. Escopo de Função
3. Escopo de Bloco (introduzido com let
e Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação.
const
no ES6)Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação.
Escopo Global
- Variáveis
Pré-processadores (SASS/SCSS): Variáveis, Mixins, NestingAprenda a manter seu CSS de forma otimizada com SASS/SCSS utilizando variáveis, mixins e nesting para um código limpo e produtivo. declaradas no nível mais externo são chamadas de variáveis
Pré-processadores (SASS/SCSS): Variáveis, Mixins, NestingAprenda a manter seu CSS de forma otimizada com SASS/SCSS utilizando variáveis, mixins e nesting para um código limpo e produtivo. globais.
- Podem ser acessadas em qualquer parte do código (desde que não haja sombras por declarações de mesmo nome em escopos internos).
Exemplo:
let saudacao = "Olá, mundo!"; // Escopo global
function exibirSaudacao() {
console.log(saudacao);
}
exibirSaudacao(); // Saída: Olá, mundo!
Escopo de Função
- Quando você declara variáveis
Pré-processadores (SASS/SCSS): Variáveis, Mixins, NestingAprenda a manter seu CSS de forma otimizada com SASS/SCSS utilizando variáveis, mixins e nesting para um código limpo e produtivo. dentro de uma função usando
var
,Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação.
let
ouVariáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação.
const
, elas ficam acessíveis apenas naquele bloco da função.Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação.
- Não é possível acessar a variável
Pré-processadores (SASS/SCSS): Variáveis, Mixins, NestingAprenda a manter seu CSS de forma otimizada com SASS/SCSS utilizando variáveis, mixins e nesting para um código limpo e produtivo. de dentro de uma função diretamente fora dela.
Exemplo:
function criarMensagem() {
let mensagem = "Mensagem secreta!";
console.log(mensagem);
}
criarMensagem(); // Saída: Mensagem secreta!
// console.log(mensagem); // Erro! mensagem não está definida no escopo global
Escopo de Bloco
- O escopo de bloco apareceu com
let
eVariáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação.
const
(ES6).Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação.
- O bloco pode ser delimitado por
{ }
como emif
,for
e outras estruturas.Estruturas de Controle: if, switch e loopsAprenda as estruturas de controle em JavaScript, como if/else, switch e loops, com exemplos claros e didáticos para otimizar seu código e lógica de programação.
- Variáveis
Pré-processadores (SASS/SCSS): Variáveis, Mixins, NestingAprenda a manter seu CSS de forma otimizada com SASS/SCSS utilizando variáveis, mixins e nesting para um código limpo e produtivo. declaradas com
let
ouVariáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação.
const
não “vazam” para fora do bloco em que foram criadas.Variáveis, Tipos de Dados e OperadoresAprenda os conceitos essenciais de JavaScript, explorando variáveis, tipos de dados e operadores com exemplos claros e práticas dicas de programação.
Exemplo:
function checarIdade(idade) {
if (idade >= 18) {
let texto = "Maior de idade";
console.log(texto); // Acessível dentro do 'if'
}
// console.log(texto); // Erro! 'texto' não está definido fora do if
}
checarIdade(20);
Observação: Quando usamosvar
, seu escopo se limita à função (ou ao global), mas não respeita escopos de bloco comoif
efor
. Por isso, é recomendado o uso delet
econst
para evitar comportamentos inesperados.
Exemplos Práticos de Funções e Escopo🔗
Para ilustrar como funções e escopo podem trabalhar em conjunto, observe o exemplo a seguir:
function calcularSalarioLiquido(salarioBruto) {
// Escopo de função
const taxaDesconto = 0.2; // 20%
function aplicarDesconto(valor) {
// Esta função está aninhada e só existe dentro de calcularSalarioLiquido
return valor - valor * taxaDesconto;
}
const salarioLiquido = aplicarDesconto(salarioBruto);
return salarioLiquido;
}
console.log(calcularSalarioLiquido(5000));
// Saída: 4000 (Redução de 20% sobre 5000)
Observe que:
taxaDesconto
eaplicarDesconto
fazem parte do escopo interno decalcularSalarioLiquido
.- Não podemos chamar
aplicarDesconto
nem acessartaxaDesconto
de fora decalcularSalarioLiquido
.
Tabela de Resumo🔗
A tabelaCriando Tabelas: `<table>`, `<tr>`, `<td>`, `<th>`Descubra como montar tabelas HTML com tags básicas. Este tutorial prático ensina o uso de <table> <tr> <td> e <th> para organizar dados de forma eficiente. abaixo resume os conceitos principais:
Conceito | Descrição |
---|---|
Função | Conjunto de instruções que executam uma tarefa específica ou calculam um valor. |
Function Declaration | Forma clássica de declarar funções, uso de palavra-chave function ; disponível em todo o escopo. |
Expression Function | Atribui uma função a uma variável; só pode ser chamada após a atribuição. |
Arrow Function | Sintaxe curta introduzida no ES6, sem this próprio. |
Escopo Global | Variáveis definidas no “topo” do código, acessíveis por todo o programa. |
Escopo de Função | Variáveis definidas dentro de uma função são visíveis apenas ali. |
Escopo de Bloco | Criado por let e const ; restringe acesso de variáveis aos blocos em que são declaradas. |
Conclusão🔗
Neste tutorial, você conheceu os princípios de funções em JavaScriptIntrodução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente., suas formas de declaração e como escopos (global, de função e de bloco) podem afetar a visibilidade e a vida útil das variáveis
Pré-processadores (SASS/SCSS): Variáveis, Mixins, NestingAprenda a manter seu CSS de forma otimizada com SASS/SCSS utilizando variáveis, mixins e nesting para um código limpo e produtivo. no seu código. Dominar esses conceitos é um passo essencial para escrever programas mais organizados, seguros e de fácil manutenção.
Ao aplicar estes conhecimentos no dia a dia, você perceberá que a utilização adequada de funções e escopos contribui diretamente para manter a legibilidade e a qualidade dos seus projetos JavaScriptIntrodução ao JavaScript e Configuração do AmbienteDescubra neste tutorial narrativo como configurar seu ambiente de desenvolvimento e começar a programar em JavaScript de maneira prática e eficiente.. Boas práticas de escrita e organização de funções são diferenciais importantes para quem deseja avançar no desenvolvimento web.
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- Documentação oficial do MDN: developer.mozilla.org/pt-BR/docs/Web/JavaScript
- ECMAScript® Language Specification: tc39.es/ecma262/