函数的typeof没有返回正确的值但未定义

Dea*_*ool -4 javascript conditional

在下面的例子中,我在typeof函数中添加了一个数字,但结果是1undefined.为什么?

var y = 1;
if (function f(){}) {
  y += typeof f;
}
console.log(y);
Run Code Online (Sandbox Code Playgroud)

预期结果:

1function
Run Code Online (Sandbox Code Playgroud)

实际结果:

1undefined
Run Code Online (Sandbox Code Playgroud)

有人能帮我理解结果是怎么回事1function吗?我知道如果块没有自己的范围,那么无法理解为什么在圆括号中,该功能在圆括号外是不可见的.

Cer*_*nce 5

那里的函数被评估为一个函数表达式,因为它在一个if语句中.因此,它不会被提升,也不会在其自身功能体之外的任何地方可见.if语句的内部期望一个值,因此它被视为表达式.

只有函数声明才会被提升并在其块中的任何位置可见.