2017-06-23 60 views
0

如果有一個功能,說foo調用函數與返回函數調用 - 區別?

function foo() { 
    console.log('bar'); 
} 

然後在JavaScript中,有沒有從另一個函數調用的函數,這樣有什麼區別:

function baz() { 
    foo(); 
} 
baz(); 

並返回函數調用,如這個:

function baz() { 
    return foo(); 
} 
baz(); 

兩種方法都給出相同的輸出(字符串輸出:'bar')。

+1

如果你不使用返回值,那麼就沒有區別。 –

+0

在這種情況下,foo只會返回任何內容,所以效果是一樣的 –

回答

2

如果你返回,那麼函數的其餘部分將不會執行......但在你的例子中,返回行後面沒有更多的代碼,所以它沒有區別。

如果不明確地返回一個值,然後返回undefined ...但foo回報undefined反正你不與baz返回值做任何事情,所以它沒有什麼區別。

你的兩個例子沒有實際的區別。

1

你沒有退貨,你只是console.log('bar')裏面的foo。它只是啊calling沒有返回。看到原來的回叫statement.Its從您的第二個

第二個給undefined值錯誤

function foo() { 
 
    return 'bar'; //this is return the `bar` 
 
} 
 

 
function baz() { 
 
    foo(); //its calling but not returning 
 
} 
 
console.log(baz());

所以你需要返回功能裏面的另一個函數調用

function foo() { 
 
    return 'bar'; 
 
} 
 

 
function baz() { 
 
    return foo(); //return is important to returning the value from the function 
 
} 
 
console.log(baz());

1

嚴格地說,你的第二個例子是錯誤的2種方式: 1)與您通話的功能回報不返回任何 2)你不檢查返回值,那麼,什麼是需要這樣稱呼它?

但即使你會檢查,它會返回undefined,所以沒有用。

0

輸出是相同的,所以似乎沒有理由偏好以另一種方式調用函數的方式。畢竟他們都默認返回undefined。但是,我認爲即使返回結果未定義,返回函數的結果有時也可能有用。通過返回未定義它可以在一個if條件,這將允許其他語句來執行被捕獲,具體如下:

function foo() { 
 
    console.log('bar'); 
 
} 
 

 
function baz() { 
 
    foo(); 
 
} 
 
baz(); 
 

 
function baz2() { 
 
    return foo(); 
 
} 
 

 
if (baz2() == undefined) { 
 
    // execute statements ... 
 
}