javascript命名函数调用抛出错误

时间:2017-08-04 07:26:56

标签: javascript



var boo= function foo(){
  console.log("I am foo");
}

boo(); // output: I am foo
foo(); // output: Uncaught ReferenceError




我对javascript命名函数感到困惑。任何人都可以解释为什么在上面的代码片段中foo()函数调用抛出了错误。提前致谢

1 个答案:

答案 0 :(得分:1)

var boo= function foo(){

函数和函数表达式之间存在明显差异。

你所拥有的是一个解析为变量的表达式。您期望工作的方式需要是函数表达式解决的函数或变量。

来自MDN docs

  

以下是匿名函数表达式的示例(名称为   没用过):

var myFunction = function() {
    statements
}
     

也可以按顺序在定义中提供名称   创建一个命名函数表达式:

var myFunction = function namedFunction(){
    statements
}
     

创建命名函数表达式的一个好处是in   在我们输入错误的情况下,堆栈跟踪将包含名称   该功能,可以更容易地找到错误的起源。

     

正如我们所看到的,这两个示例都不是以function关键字开头的。   涉及不以函数开头的函数的语句是   函数表达式。

相关问题