1
resposta

criação de variaveis para as funções/muito conteudo numa aula só :(

Bom dia! Fiquei muito perdida nessa aula... minha principal dúvida foi: por que sempre tem que criar uma variavel antes de chamara função?

var pacienteTr = montaTr(paciente);

precisa criar essa var todas a vezes antes de chamar uma função?? por que é necessário criar?? não te outro jeito?? pq isso sinceramente não vem na minha cabeça, eu apenas jogo a função e não sei pq isso é necessario!! :'(

não poderia ser algo do tipo:

montaTr(paciente){
return paciente????
}

aos 06:30 minutos de aula, eu simplesmente não absorvi mais nada...muito rápido e confuso =/

help! :(

1 resposta

Olá Alexandra, tudo bem?

De fato refatoração pode ser algo um pouco complexo e demora um pouquinho para a gente efetivamente compreender todas as partes, mas fique tranquila :)

Vou explicar cada parte que você não entendeu:

por que sempre tem que criar uma variavel antes de chamara função?

Precisamos criar uma variável para guardar o endereço na memória onde foi criado a linha de nossa tabela, veja o nosso código:

var pacienteTr = montaTr(paciente);
tabela.appendChild(pacienteTr);

Se não tivéssemos criado o var pacienteTr não teríamos mais acesso onde estava essa linha, então sempre que chamamos uma função armazenamos o resultado dela em alguma variável!

por que é necessário criar?? não te outro jeito??

Existe como não criar, veja que aos 11 minutos de aula criamos varias variáveis para armazenar o resultado da função montaTd:

    var nomeTd = montaTd(paciente.nome, "info-nome");
    var pesoTd = montaTd(paciente.peso, "info-peso");
    var alturaTd = montaTd(paciente.altura, "info-peso");
    var gorduraTd = montaTd(paciente.gordura, "info-gordura");
    var imcTd = montaTd(paciente.imc, "info-imc");

E após isso trocamos para:

    pacienteTr.appendChild(montaTd(paciente.nome, "info-nome"));
    pacienteTr.appendChild(montaTd(paciente.peso, "info-peso"));
    pacienteTr.appendChild(montaTd(paciente.altura, "info-altura"));
    pacienteTr.appendChild(montaTd(paciente.gordura, "info-gordura"));
    pacienteTr.appendChild(montaTd(paciente.imc, "info-imc"));

Afinal o que estamos fazendo?

Ao invés de armazenar o resultado da função em uma variável, estamos passando o resultado para outra função (pacientTr.appendChild), dessa forma recebemos o retorno da função e já colocamos em nossa tr.

Poderíamos fazer a mesma coisa no começo:

    var tabela = document.querySelector("#tabela-pacientes");
    tabela.appendChild(montaTr(paciente));

Mas as vezes para quem está lendo pode não ser tão claro o que estamos fazendo, então da maneira original a leitura é um pouco melhor, pois sabemos que estamos criando uma linha com os dados do paciente e armazenando em nossa tabela, nesse segundo caso pode parecer muito direto para quem está observando nosso código :)

Recomendo que você de uma olhadinha novamente na aula, pois acredito que após uma segunda vez vai ficar mais claro, mas basicamente o que estamos tentando sempre fazer é:

  • Trocar códigos repetidos por funções
  • Armazenar o resultado de funções em variáveis

Qualquer coisa estou a disposição :)

Abraços e Bons Estudos!