Javascript 函数引用在IIFE中不可用?

Javascript 函数引用在IIFE中不可用?,javascript,scope,iife,Javascript,Scope,Iife,如果我运行以下命令: var fn = function(){} (function(){ fn(); }()); 它在Chrome中抛出“TypeError:undefined不是函数”,在Firebug中抛出“TypeError:fn不是函数” fn是否应该在此范围链中可用,而不必执行window.fn 奇怪的是,如果我跑步: var fn = function(){} console.log(fn); (function(){ fn(); }()); 然后它的行为与预期的一

如果我运行以下命令:

var fn = function(){}

(function(){
    fn();
}());
它在Chrome中抛出“TypeError:undefined不是函数”,在Firebug中抛出“TypeError:fn不是函数”

fn
是否应该在此范围链中可用,而不必执行
window.fn

奇怪的是,如果我跑步:

var fn = function(){}
console.log(fn);

(function(){
fn();
}());
然后它的行为与预期的一样:
fn
作为一个函数记录,并且在Chrome或Firefox中都不会抛出错误


这让我觉得自己很傻,好像我不应该声称自己理解JS。

你忘了添加分号:

var fn = function(){};

(function(){
    fn();
}());
该死,是阿西

var fn = function(){};

(function(){
fn();
}());

哈,你发帖的时候我自己也在回复!回答你自己问题的方式,逐字逐句+1 ;-)