Seguem algumas sugestões.
Coloque ponto-e-vírgula no final das linhas. Pode parecer "frescura", e sei que o JavaScript "aceita" o código sem ponto e vírgula e "funciona", e tem até muita gente que ensina a não usar. Mas isso evita algumas situações bizarras que podem ocorrer se você não usá-los, como essa e essa (veja mais sobre isso aqui).
Se uma variável só vai ser retornada e nada mais, não precisa dela, pode retornar direto:
function media(firstNote, secondNote) {
return (firstNote + secondNote) / 2;
}
Outra forma de iterar pelos elementos é usando for..of
:
for (const student of students) {
const nota = media(student.firstNote, student.secondNote);
if (nota < 7) {
alert(`A média do(a) aluno(a) ${student.nome} é: ${nota}, Foi reprovado. Tente novamente`);
} else {
alert(`Aluno(a) ${student.nome} foi aprovado(a)! Média: ${nota}`);
}
}
Ou ainda com desestruturação:
for (const { nome, firstNote, secondNote } of students) {
const nota = media(firstNote, secondNote);
if (nota < 7) {
alert(`A média do(a) aluno(a) ${nome} é: ${nota}, Foi reprovado. Tente novamente`);
} else {
alert(`Aluno(a) ${nome} foi aprovado(a)! Média: ${nota}`);
}
}
Se bem que neste caso a função é tão simples que sei lá se precisa mesmo dela. Poderia fazer o cálculo direto no loop:
for (const { nome, firstNote, secondNote } of students) {
const media = (firstNote + secondNote) / 2; // não precisa da função, se o cálculo é tão simples
if (media < 7) {
alert(`A média do(a) aluno(a) ${nome} é: ${media}, Foi reprovado. Tente novamente`);
} else {
alert(`Aluno(a) ${nome} foi aprovado(a)! Média: ${media}`);
}
}
Quanto à dica que deram para usar arrow function só porque o código fica "enxuto e moderno", eu diria que não é bem assim. Primeiro que código menor não é necessariamente melhor.
Segundo que optar por usar ou não arrow function vai muito além de "simplificar" o código ou deixá-lo mais curto. Na verdade, existem várias outras diferenças muito mais importantes, citadas nos links abaixo (inclusive, "deixar o código mais curto" eu acho o motivo menos importante de todos):
- https://www.tabnews.com.br/Ernane/a-diferenca-entre-funcoes-tradicionais-e-arrow-functions-no-javascript
- https://www.tabnews.com.br/ericnevesr/tipos-de-declaracoes-de-funcoes-em-javascript
- https://www.tabnews.com.br/FelipeMoyaAnadao/ajuda-em-javascript-funcoes-normais-vs-funcoes-anonimas-function-e
- https://www.tabnews.com.br/LikedAndrew/explicacao-functions-e-arrow-functions-no-javascript
Links adicionais:
- Documentação da MDN:
- O que é Arrow Function e quando usar? (siga os outros links indicados no quadro azul)
- Qual a diferença entre as funções
var name = function()
efunction name()
?