Por que o console JS retorna um valor indefinido extra? [duplicado

Esta pergunta já tem uma resposta aqui:

Por que esse código JavaScript imprime "indefinido" no console? 1 resposta

lguém pode me dizer o que está acontecendo aqui (testado no Firefox e Chrome

Tenho uma função simples retornando um fechament

function say (name) {
  var msg = 'hallo';
  return function () {
    console.log(msg, name);
  }
}

var sayName = say('joe');
sayName();

Se verificar o console do navegador, obtenho o resultado esperado:

Hallo Joe

No entanto, se eu deixar de fora a última linha e executar sayName () no console, obtenho o seguinte:

Hallo Joe
undefined

De onde vem o extra indefinido?

questionAnswers(1)

yourAnswerToTheQuestion