2013-03-12 66 views
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

在第一個例子foo沒有一個return語句,以便返回undefined不管什麼bar()返回值。

要更正它以提供與其他人相同的結果,請添加return語句。

function foo() { return bar(); } 
function bar() { return "bar"; } 
alert(foo()); 
+0

與perl或ruby不同,函數總是返回最後一次評估的值。我被傳遞地困住了。 – sof 2013-03-12 10:23:53