为什么在JavaScript中调用命名的已分配函数失败?

时间:2016-04-18 22:12:11

标签: javascript function scope anonymous-function

以下可能有点无意义,但为什么第一个调用在下面工作而第二个调用失败?

var foo = function bar() {
  console.log("Martini");
}

foo(); // works
bar(); // undefined; i.e. "Uncaught ReferenceError: bar is not defined"

与范围有关吗?

推论初学者的问题:函数定义“解析” - 但实际上是有效的语法 - 并且是否存在命名指定的匿名函数有意义的上下文?

1 个答案:

答案 0 :(得分:8)

函数声明创建一个与当前作用域中的名称相同的变量。

函数表达式(已命名或匿名)不会。函数表达式的名称可以作为变量 inside 函数(用于递归调用自身)和调试工具。