2

私が以下を実行した場合:

var fn = function(){}

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

Chromeでは「TypeError:undefined is not a function」をスローし、Firebugでは「TypeError:fn isnotafunction」をスローします。

fnする必要なしに、このスコープチェーンで利用できるべきではありませんwindow.fnか?

奇妙な部分は、私が実行した場合:

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

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

その後、期待どおりに動作しfnます。関数としてログに記録され、ChromeまたはFirefoxのいずれでもエラーはスローされません。

これは、JSを理解していると主張するべきではないように、私をばかげていると感じさせています。

4

2 に答える 2

4

セミコロンを追加するのを忘れました:

var fn = function(){};

(function(){
    fn();
}());
于 2012-09-13T19:50:18.920 に答える
1

くそー、それはASIでした。

var fn = function(){};

(function(){
fn();
}());
于 2012-09-13T19:50:34.130 に答える