Por que minha variável local elevada do JavaScript está retornando indefinida, mas a variável global elevada está retornando em branco? [duplicado]

Esta pergunta já tem uma resposta aqui:

Por que obtenho o valor "resultado" desse fechamento? 3 respostas

Como parte do aprendizado de JavaScript, tento escrever código para demonstrar o conceito que estou aprendendo; hoje eu estou aprendendo variáveis içadas. Aqui está o código que escrevi:

console.log("A: My name is " + name);   

function happy() {
  console.log ("1: I am " + feeling);   
    var feeling = "happy";
  console.log ("2: I am " + feeling);   
}
happy(); 

var name = "Jim";
console.log("B: My name is " + name);   

Eu esperava os seguintes resultados:

A: My name is undefined
1: I am undefined
2: I am happy
B: My name is Jim

No entanto, ao testar meu código em WriteCodeOnline.com e em outra sandbox, o primeiro console.log exibeA: My name is. Estou usando um navegador Chrome, se isso faz diferença.

Então, minha pergunta é: por que a variável local içada dentro da função retorna indefinida enquanto a variável global içada retorna um espaço em branco?

questionAnswers(1)

yourAnswerToTheQuestion