为什么匿名函数在这里与命名函数区别对待?

时间:2011-07-07 16:01:46

标签: javascript function anonymous-function

  

可能重复:
  Javascript: var functionName = function() {} vs function functionName() {}
  What is the difference between a function expression vs declaration in Javascript?

今天我偶然发现了以下现象:

foo();
bar();

function foo()
{
    console.log("inside foo");
}

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

FireBug抱怨以下错误消息:

  

栏不是一个功能

有几个教程声称function f()var f = function()基本相同。显然,他们不是,但到底发生了什么?

1 个答案:

答案 0 :(得分:1)

函数声明可在其定义的范围内的任何位置使用,甚至可以在其物理定义之前使用。

var bar = function() { ... };是碰巧保存函数的正常变量。与所有其他变量一样,它只能在分配后才能使用 (您无法观察变量的未来值)