var boo= function foo(){
console.log("I am foo");
}
boo(); // output: I am foo
foo(); // output: Uncaught ReferenceError

我对javascript命名函数感到困惑。任何人都可以解释为什么在上面的代码片段中foo()函数调用抛出了错误。提前致谢
答案 0 :(得分:1)
var boo= function foo(){
函数和函数表达式之间存在明显差异。
你所拥有的是一个解析为变量的表达式。您期望工作的方式需要是函数表达式解决的函数或变量。
来自MDN docs
以下是匿名函数表达式的示例(名称为 没用过):
var myFunction = function() { statements }
也可以按顺序在定义中提供名称 创建一个命名函数表达式:
var myFunction = function namedFunction(){ statements }
创建命名函数表达式的一个好处是in 在我们输入错误的情况下,堆栈跟踪将包含名称 该功能,可以更容易地找到错误的起源。
正如我们所看到的,这两个示例都不是以function关键字开头的。 涉及不以函数开头的函数的语句是 函数表达式。