【发布时间】:2016-08-10 20:28:53
【问题描述】:
以下可能有点无意义,但是为什么下面的第一个调用有效而第二个调用失败?
var foo = function bar() {
console.log("Martini");
}
foo(); // works
bar(); // undefined; i.e. "Uncaught ReferenceError: bar is not defined"
这与范围有关吗?
推论初学者的问题:函数定义“解析” - 但实际上是有效的语法 - 是否有任何上下文可以命名分配的匿名函数?
【问题讨论】:
-
函数声明/表达式的另一个重要区别是,前者是用名字和函数体来提升的,而后者只用名字来提升,即
foo是undefined直到在代码中到达它的函数体。
标签: javascript function scope anonymous-function