3 つの同様のスニペットには、関数の前方参照が含まれていますが、動作が異なります。最初のものは私には奇妙に思えます。なんで?
function foo() { bar(); }
function bar() { return "bar"; }
alert(foo());
-> undefined
function foo() { bar(); }
function bar() { alert("bar"); }
foo();
-> bar
function foo() { return bar; }
bar = "bar";
alert(foo());
-> bar