三个相似的片段包括函数转发引用,但表现不同。第一个似乎很奇怪。为什么呢?
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
答案 0 :(得分:4)
在第一个示例中,foo
没有return
语句,因此无论undefined
的返回值是什么,它都会返回bar()
。
要更正它以提供与其他人相同的结果,请添加return
语句。
function foo() { return bar(); }
function bar() { return "bar"; }
alert(foo());