Bill Helper pt-br Explainer

Explicação de Auxiliar de conta

Objetivo do desafio: Use uma função auxiliar dentro de outra função.

Passo a passo da solução: Ao criar uma função complexa, o código fica facilmente cada vez mais longo e mais difícil de ler.

Quando isso acontece, é útil dividir grandes funções em funções menores e usar estas últimas como “auxiliares” de uma função principal. Isso mantém a função principal mais legível.

Neste desafio, uma função chamada calculateTax() é importada de um código adicional. Essa função pode ser usada para ajudar na função splitBill() do desafio.

Para concluir o desafio, crie uma nova variável dentro da função e dê a ela calculateTax(total) como um valor. Por exemplo:


let tax = calculateTax(total);

Então, dentro da função, adicione a variável a total usando o operador +=.

Por último, retorne o total dividido por people.

Solução do código de exemplo:


import { calculateTax } from 'grasshopper.helperFunctions';

function splitBill(total, people) {

let tax = calculateTax(total)

total += tax;

return total / people;

}

console.log(splitBill(76, 4));

Conceitos de JavaScript: Funções, Funções auxiliares, console.log(), Variáveis, Variáveis locais, Comando de retorno, Importações, += Operador

Código Adicional (código oculto executado antes do código do desafio):


let calculateTax = total => {

return total * 0.15;

};

12 Likes

Muito muito muito obrigado, vendo a reapostá eu percebi o meu vacilo, não tava pegando a interpretação dessa lição.

9 Likes

pois eu ainda não pequei kkkkk

Rapaz, quebrei a cabeça nisso e ainda to boiando também

1 Like

como foi esta questao?

Como eu também fiquei um tempão tentando entender e finalmente entendi, vou TENTAR explicar como funcionou pra mim, comentando o código linha a linha, ok?

import { calculateTax } from ‘grasshopper.helperFunctions’;

Importou a função “calculateTax” de outro lugar. O quê essa função faz? Pelo nome, calcula a taxa, mas não sabemos exatamente como ele faz, porque não temos acesso à função em si. Mas basicamente seria o nosso cálculo dos 10% da conta, ok?

function splitBill(total, people) {

Declaramos a função “splitBill”, que terá como parâmetros “total” e “people”, que serão o total da conta e o número de pessoas pelo qual a conta será dividida
LEMBRANDO QUE: estamos apenas DECLARANDO a função, ela não é executada agora (e nem teria como ser executada agora, como vamos ver a frente)

let tax = calculateTax(total)

Criamos uma variável local chamada “tax” e atribuímos a ela o valor que será calculado através da função “calculateTax” com o valor total da conta como argumento.
Lembra que eu disse estarmos apenas DECLARANDO e não executando? No momento, ainda não sabemos que valor é esse de “total”, então não teria como executar. É justamente aí que muita gente (inclusive eu) se confunde na parte de declaração de funções. É como se nós estivéssemos criando todo um molde do que vamos executar, mas, na verdade, só vai ser executado lá frente, com os argumentos que vamos receber para rodar essa função.

total += tax;

Usamos a atribuição de adição para adicionar o valor calculado de “tax” (que foi calculado na linha anterior) ao valor que já existe em total. Ou seja, se calculamos 4 como tax e o total era 76, o novo total será 80

return total / people;

Retornamos o valor “total” (que na linha anterior já acrescentamos a taxa) dividido pelo “people”, que é o número de pessoas.

--------------------------------- Final da Declaração da Função ---------------------------------------

----------------------------------------- Execução do código ----------------------------------------------

console.log(splitBill(76, 4));

Chamamos a função “splitBill” com os argumentos “76” (para o total) e “4” (para o people).
AGORA SIM o código da função splitBill será executado, com os argumentos se encaixando nos campos da função declarada.

Espero ter ajudado!

16 Likes

Valeu pela explicação. Obrigado

1 Like

Cara, eu te amo! Rs …

1 Like

Hahahahah declarações de amor num fórum de programação

2 Likes

Não consigo resolver essa de jeito nenhum :disappointed:
Já tá me dando raiva

2 Likes

não entendi o porquê, isso ta dificultando aprendizado

1 Like

Viu a resposta que eu deixei a cima? Expliquei linha por linha, vê se te ajuda.

Viu a resposta que eu deixei a cima? Dá uma olhadinha, expliquei linha por linha, vê se te ajuda.

Olá!
Consegui obrigada :blush:

1 Like

obrigado cara, explicou direitinho, bem detalhado

1 Like

Obrigada pela explicação! :slightly_smiling_face:

1 Like

Eu fiz igualzinho mas o jogo nao funciona