1

三个类似的片段包括函数前向引用,但行为不同。第一个在我看来很奇怪。为什么?

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 回答