Não é possível substituir a função de dentro da função [duplicado]

Esta pergunta já tem uma resposta aqui:

Variável no corpo da função e na própria função têm o mesmo nome (JavaScript) 1 resposta

Eu obtive um resultado inesperado. Aqui está o código:

b = function c() {
  console.log(c);
  c = 3;
  console.log(c);
}
b();

Eu pensei que o segundo console.log deveria imprimir "3", mas obtive a função em si. Por quê?

Enquanto isso, no código abaixo, obtive o "3" certo.

function ff() {
  ff = 3;
  console.log(ff);
}
ff();