Menu
Coddy logo textTech

Função Aninhada

Lição 7 de 14 do curso Declaração de Funções em JavaScript da Coddy.

Funções aninhadas são como super-heróis com ajudantes – são funções poderosas que podem criar e usar outras funções dentro delas.

Uma função aninhada é uma função definida dentro de outra função. A função interna tem acesso às variáveis e parâmetros da função externa, criando um escopo local dentro da função externa.

Imagine que você tem uma função principal (o super-herói) que precisa de ajuda com uma tarefa específica. Em vez de depender de uma função externa, ela pode criar uma função auxiliar (o ajudante) dentro de si mesma para lidar com essa tarefa específica. Esta função auxiliar só pode ser acessada e usada pela função principal. Por exemplo:

function calculateDiscount(originalPrice, discountPercentage) {
  	function calculateDiscountAmount(price, discount) {
    	return price * discount; // Calcula o valor do desconto (função interna)
  	}

  	const discountAmount = calculateDiscountAmount(originalPrice, discountPercentage / 100);
  	const finalPrice = originalPrice - discountAmount;
  	return finalPrice;
}

const discountedPrice = calculateDiscount(100, 20);
console.log(discountedPrice); // Saída: 80
  • Função Externa:
    • Definimos uma função chamada calculateDiscount que recebe dois argumentos: originalPrice e discountPercentage.
  • Função Interna:
    • Dentro da função externa, definimos outra função chamada calculateDiscountAmount. Esta é a função aninhada. Ela recebe dois argumentos: price e discount (note que ela não tem acesso direto a originalPrice ou discountPercentage).
  • Saída: A função retorna o preço final, que é 80 (após aplicar o desconto de 20%).
challenge icon

Desafio

Fácil

Sua tarefa é criar uma função aninhada chamada calculateTaxAmount que deve receber o price e o taxRate da função externa calculateWithTax, calcular o valor do imposto e retorná-lo. (O valor do imposto é o preço multiplicado pela taxa de imposto)

Finalmente, a função externa deve calcular e retornar o preço final (incluindo o imposto) somando o valor do imposto ao preço original e retornar o preço final.

Experimente você mesmo

function calculateWithTax(product) {
    let price = product.price;
    let taxRate = product.taxRate;
   // escreva o código aqui
}

Todas as lições de Declaração de Funções em JavaScript