一旦将javascript函数分配给不同的var,为什么不能通过其原始名称访问javascript函数?

Muk*_*ary 5 javascript function

var f=function foo()
{
console.log("hello");
};

f();
foo();
Run Code Online (Sandbox Code Playgroud)

这会产生一个错误:"异常:ReferenceError:foo未定义"

但是"foo"是定义的.为什么会发生这种情况?我知道这是一个函数表达式,"f()"用于访问此函数.但这不是一个匿名函数,我有一个这个函数的名字.为什么我无法使用其名称访问该功能?

aei*_*eid 6

MDN - 函数表达式

句法

var myFunction = function [name]([param1[, param2[, ..., paramN]]]) {
   statements
};
Run Code Online (Sandbox Code Playgroud)

功能名称.可以省略,在这种情况下函数是匿名的.该名称仅对函数体而言是本地的.