提升内部函数 - 内部函数和同名变量 - 输出?

Hoisting inside function - inner function and variable having same name - Output?

function y() {
  var x = 'hi';

  function x() {
    return 'bye';
  };
  return x(); // x is not a function
  return x; // 'hi'
}

console.log(y())

无法执行此函数。有人可以解释一下吗?

函数和变量声明已提升。函数声明也提升了值的赋值。

所以function xvar x都在当前范围内创建了一个名为x的变量。 function x 还为该变量分配了一个函数。

具有 = 的分配未提升。

因此 x = 'hi' 用字符串覆盖该函数。