Cuidado para não se confundirem!
O que acontece é que quando o console do Chrome identifica uma expressão que é válida mas não tem retorno ele retorna por padrão undefined
.
Exemplo:
> function testeRetorno() {
return true;
}
<- undefined
A declaração de uma função não retorna nada, por isso o Chrome retorna por padrão undefined
. Observe que ele coloca uma setinha antes deste valor, algo como <-
Agora observe o que ocorre quando você simplesmente escreve o nome da função no console e dá enter:
> testeRetorno
<- ƒ testeRetorno() {
return true;
}
Ele retorna o valor da variável teste retorno, que é uma função.
Por fim, ao executar essa função, como ela possui retorno, teremos true
como retorno:
> testeRetorno()
<- true
"Então qual o motivo do console.log
retornar dois valores?"
Ele não retorna dois valores! Ele primeiro imprime o valor solicitado e depois dá o retorno padrão quando a expressão não tem retorno, o undefined
.
Perceba:
> console.log(3)
3 // valor solicitado para impressão
<- undefined // retorno padrão
Espero que tenha ajudado a entender essas diferenças. Qualquer dúvida só comentar.