Olá Raissa, tudo bem com você?
Antes de mais nada eu vou assumir que esse valores
é um array apenas de números, ok?
O problema está aqui:
for(var i= 0; i <= valores.length; i++){
Vou te mostrar uma pequena execução do seu código, que acredito que ficará mais claro :)
Suponha que:
valores = [ 2, 4]
Então:
num = 0
somar = 1
Vamos para a primeira execução
i = 0
num = valores[i]
console.log(num) => 2
somar = 2 *1 -> 2
Tudo normal, agora a segunda execução:
i = 1
num = valores[i]
console.log(num) => 4
somar = 2 *4 -> 8
E agora temos o probleminha :)
Temos que i = 2
, valores.length = 2
e a nossa verificação é de i <= valores.length
, ou seja, teremos mais uma execução:
i = 2
num = valores[i]
Mas quem e valores[2] ?
Não existe, então o javascript dirá que é um valor indefinido, ou seja, undefined e dessa forma quando multiplicamos um valor númerico por algo indefinido:
somar = 8 * undefined
Temos um NaN (Not a Number)
Para corrigir esse código, é bem simples, precisamos percorrer enquanto o i
for menor que valores.length
, quando eles chegarem no mesmo valor é porque não temos esse indice :)
for(var i= 0; i < valores.length; i++){
E dessa forma o nosso código irá funcionar corretamente :)
Abraços e Bons Estudos!