【问题标题】:Function reference unavailable within IIFE?IIFE 中的函数引用不可用?
【发布时间】:2012-09-13 19:47:44
【问题描述】:

如果我运行以下命令:

var fn = function(){}

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

它在 Chrome 中抛出“TypeError: undefined is not a function”,在 Firebug 中抛出“TypeError: fn is not a function”。

不应该fn 在这个范围链中可用,而不必做window.fn

奇怪的是,如果我跑步:

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

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

然后它的行为符合预期:fn 被记录为一个函数,并且在 Chrome 或 Firefox 中都没有引发错误。

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

【问题讨论】:

    标签: javascript scope iife


    【解决方案1】:

    你忘了加分号:

    var fn = function(){};
    
    (function(){
        fn();
    }());
    

    【讨论】:

    • 哈,你发帖的时候我是自己回答的!
    【解决方案2】:

    该死,这是 ASI。

    var fn = function(){};
    
    (function(){
    fn();
    }());
    

    【讨论】:

    • 从字面上回答您自己的问题的方式。 +1 ;-)
    猜你喜欢
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 2018-05-30
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多