1

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
4

1 に答える 1

4

最初の例fooではreturnステートメントがないためundefined、戻り値が何であっても戻りますbar()

他のものと同じ結果になるように修正するには、returnステートメントを追加します。

function foo() { return bar(); }
function bar() { return "bar"; }
alert(foo());
于 2013-03-12T09:56:39.790 に答える